|
|
|
1 |
|
//----------------------------------------------------------------------------- |
2 |
|
// File: odbcss.h |
3 |
|
// |
4 |
|
// Copyright: Copyright (c) Microsoft Corporation |
5 |
|
// |
6 |
|
// Contents: |
7 |
|
// |
8 |
|
// Comments: This is the application include file for the SQL Server driver specific defines. |
9 |
|
// |
10 |
|
//----------------------------------------------------------------------------- |
11 |
|
|
12 |
|
#ifndef __ODBCSS |
13 |
|
#define __ODBCSS |
14 |
|
|
15 |
|
#ifdef __cplusplus |
16 |
|
extern "C" { /* Assume C declarations for C++ */ |
17 |
|
#endif /* __cplusplus */ |
18 |
|
|
19 |
|
// Useful defines |
20 |
|
#define SQL_MAX_SQLSERVERNAME 128 // max SQL Server identifier length |
21 |
|
|
22 |
|
// SQLSetConnectOption/SQLSetStmtOption driver specific defines. |
23 |
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server driver usage. |
24 |
|
|
25 |
|
// Connection Options |
26 |
|
#define SQL_COPT_SS_BASE 1200 |
27 |
|
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only |
28 |
|
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare |
29 |
|
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login |
30 |
|
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) // Preserve server cursors after SQLTransact |
31 |
|
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) // dbgetuserdata/dbsetuserdata |
32 |
|
#define SQL_COPT_SS_ENLIST_IN_DTC SQL_ATTR_ENLIST_IN_DTC // Enlist in a DTC transaction |
33 |
|
#define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA // Enlist in a XA transaction |
34 |
|
//SQL_ATTR_CONNECTION_DEAD 1209 (It will return current connection status, it will not go to server) |
35 |
|
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) // Enables FallBack connections |
36 |
|
#define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11) // Used to access SQL Server ODBC driver performance data |
37 |
|
#define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12) // Used to set the logfile name for the Performance data |
38 |
|
#define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13) // Used to set the query logging threshold in milliseconds. |
39 |
|
#define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14) // Used to set the logfile name for saving queryies. |
40 |
|
#define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15) // Used to start and stop query logging. |
41 |
|
#define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16) // Used to make a statistics log entry to disk. |
42 |
|
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) // Enable/Disable Quoted Identifiers |
43 |
|
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) // Enable/Disable ANSI NULL, Padding and Warnings |
44 |
|
#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) // Allow BCP usage on connection |
45 |
|
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) // Perform code page translation |
46 |
|
#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21) // File name to be attached as a database |
47 |
|
#define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22) // Enable/Disable CONCAT_NULL_YIELDS_NULL |
48 |
|
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) // Allow strong encryption for data |
49 |
|
|
50 |
|
#define SQL_COPT_SS_MAX_USED SQL_COPT_SS_ENCRYPT |
433 |
|
typedef unsigned char DBTINYINT; |
434 |
|
typedef short DBSMALLINT; |
435 |
|
typedef unsigned short DBUSMALLINT; |
436 |
|
typedef double DBFLT8; |
437 |
|
typedef unsigned char DBBIT; |
438 |
|
typedef unsigned char DBBOOL; |
439 |
|
typedef float DBFLT4; |
440 |
|
|
441 |
|
typedef DBFLT4 DBREAL; |
442 |
|
typedef UINT DBUBOOL; |
443 |
|
|
444 |
|
typedef struct dbvarychar |
445 |
|
{ |
446 |
|
DBSMALLINT len; |
447 |
|
DBCHAR str[DBMAXCHAR]; |
448 |
|
} DBVARYCHAR; |
449 |
|
|
450 |
|
typedef struct dbvarybin |
451 |
|
{ |
452 |
|
DBSMALLINT len; |
453 |
|
BYTE array[DBMAXCHAR]; |
454 |
|
} DBVARYBIN; |
455 |
|
|
456 |
|
typedef struct dbmoney |
457 |
|
{ // Internal representation of MONEY data type |
458 |
|
LONG mnyhigh; // Money value *10,000 (High 32 bits/signed) |
459 |
|
ULONG mnylow; // Money value *10,000 (Low 32 bits/unsigned) |
460 |
|
} DBMONEY; |
461 |
|
|
462 |
|
typedef struct dbdatetime |
463 |
|
{ // Internal representation of DATETIME data type |
464 |
|
LONG dtdays; // No of days since Jan-1-1900 (maybe negative) |
465 |
|
ULONG dttime; // No. of 300 hundredths of a second since midnight |
466 |
|
} DBDATETIME; |
467 |
|
|
468 |
|
typedef struct dbdatetime4 |
469 |
|
{ // Internal representation of SMALLDATETIME data type |
470 |
|
USHORT numdays; // No of days since Jan-1-1900 |
471 |
|
USHORT nummins; // No. of minutes since midnight |
472 |
|
} DBDATETIM4; |
473 |
|
|
474 |
|
typedef LONG DBMONEY4; // Internal representation of SMALLMONEY data type |
475 |
|
// Money value *10,000 |
476 |
|
|
477 |
|
#define DBNUM_PREC_TYPE BYTE |
478 |
|
#define DBNUM_SCALE_TYPE BYTE |
479 |
|
#define DBNUM_VAL_TYPE BYTE |
480 |
|
|
481 |
|
#if (ODBCVER < 0x0300) |
482 |
|
#define MAXNUMERICLEN 16 |
483 |
|
|
484 |
|
typedef struct dbnumeric |
485 |
|
{ // Internal representation of NUMERIC data type |
486 |
|
DBNUM_PREC_TYPE precision; // Precision |
487 |
|
DBNUM_SCALE_TYPE scale; // Scale |
488 |
|
BYTE sign; // Sign (1 if positive, 0 if negative) |
489 |
|
DBNUM_VAL_TYPE val[MAXNUMERICLEN]; // Value |
490 |
|
} DBNUMERIC; |
491 |
|
typedef DBNUMERIC DBDECIMAL;// Internal representation of DECIMAL data type |
492 |
|
#else // Use ODBC 3.0 definitions since same as DBLib |
493 |
|
#define MAXNUMERICLEN SQL_MAX_NUMERIC_LEN |
494 |
|
typedef SQL_NUMERIC_STRUCT DBNUMERIC; |
495 |
|
typedef SQL_NUMERIC_STRUCT DBDECIMAL; |
496 |
|
#endif |
497 |
|
|
498 |
|
#endif // MAXNUMERICLEN |
499 |
|
|
500 |
|
#ifndef INT |
501 |
|
typedef int INT; |
502 |
|
typedef long DBINT; |
503 |
|
#ifndef _LPCBYTE_DEFINED |
504 |
|
#define _LPCBYTE_DEFINED |
505 |
|
typedef const LPBYTE LPCBYTE; |
506 |
|
#endif |
507 |
|
typedef DBINT * LPDBINT; |
508 |
|
#endif |
509 |
|
|
510 |
|
/***************************************************************** |
511 |
|
This struct is a global used for |
512 |
|
gathering statistical data on the driver. |
513 |
|
Access to this structure is controlled via the |
514 |
|
pStatCrit; |
515 |
|
******************************************************************/ |
516 |
|
|
517 |
|
typedef struct sqlperf |
518 |
|
{ |
519 |
|
// Application Profile Statistics |
520 |
|
DWORD TimerResolution; |
521 |
|
DWORD SQLidu; |
522 |
|
DWORD SQLiduRows; |
523 |
|
DWORD SQLSelects; |
524 |
|
DWORD SQLSelectRows; |
525 |
|
DWORD Transactions; |
526 |
|
DWORD SQLPrepares; |
527 |
|
DWORD ExecDirects; |
528 |
|
DWORD SQLExecutes; |
529 |
|
DWORD CursorOpens; |
530 |
|
DWORD CursorSize; |
531 |
|
DWORD CursorUsed; |
532 |
|
LDOUBLE PercentCursorUsed; |
533 |
|
LDOUBLE AvgFetchTime; |
534 |
|
LDOUBLE AvgCursorSize; |
535 |
|
LDOUBLE AvgCursorUsed; |
536 |
|
DWORD SQLFetchTime; |
537 |
|
DWORD SQLFetchCount; |
538 |
|
DWORD CurrentStmtCount; |
539 |
|
DWORD MaxOpenStmt; |
540 |
|
DWORD SumOpenStmt; |
541 |
|
|
542 |
|
// Connection Statistics |
543 |
|
DWORD CurrentConnectionCount; |
544 |
|
DWORD MaxConnectionsOpened; |
545 |
|
DWORD SumConnectionsOpened; |
546 |
|
DWORD SumConnectiontime; |
547 |
|
LDOUBLE AvgTimeOpened; |
548 |
|
|
549 |
|
// Network Statistics |
550 |
|
DWORD ServerRndTrips; |
551 |
|
DWORD BuffersSent; |
552 |
|
DWORD BuffersRec; |
553 |
|
DWORD BytesSent; |
554 |
|
DWORD BytesRec; |
555 |
|
|
556 |
|
// Time Statistics; |
557 |
|
DWORD msExecutionTime; |
558 |
|
DWORD msNetWorkServerTime; |
559 |
|
|
560 |
|
} SQLPERF; |
561 |
|
|
562 |
|
// The following are options for SQL_COPT_SS_PERF_DATA and SQL_COPT_SS_PERF_QUERY |
563 |
|
#define SQL_PERF_START 1 // Starts the driver sampling performance data. |
564 |
|
#define SQL_PERF_STOP 2 // Stops the counters from sampling performance data. |
565 |
|
|
566 |
|
// The following are defines for SQL_COPT_SS_PERF_DATA_LOG |
567 |
|
#define SQL_SS_DL_DEFAULT TEXT("STATS.LOG") |
568 |
|
|
569 |
|
// The following are defines for SQL_COPT_SS_PERF_QUERY_LOG |
570 |
|
#define SQL_SS_QL_DEFAULT TEXT("QUERY.LOG") |
571 |
|
|
572 |
|
// The following are defines for SQL_COPT_SS_PERF_QUERY_INTERVAL |
573 |
|
#define SQL_SS_QI_DEFAULT 30000 // 30,000 milliseconds |
574 |
|
|
575 |
|
// ODBC BCP prototypes and defines |
576 |
|
|
577 |
|
// Return codes |
578 |
|
#define SUCCEED 1 |
579 |
|
#define FAIL 0 |
580 |
|
#define SUCCEED_ABORT 2 |
581 |
|
#define SUCCEED_ASYNC 3 |
582 |
|
|
583 |
|
// Transfer directions |
584 |
|
#define DB_IN 1 // Transfer from client to server |
585 |
|
#define DB_OUT 2 // Transfer from server to client |
586 |
|
|
587 |
|
// bcp_control option |
588 |
|
#define BCPMAXERRS 1 // Sets max errors allowed |
589 |
|
#define BCPFIRST 2 // Sets first row to be copied out |
590 |
|
#define BCPLAST 3 // Sets number of rows to be copied out |
591 |
|
#define BCPBATCH 4 // Sets input batch size |
592 |
|
#define BCPKEEPNULLS 5 // Sets to insert NULLs for empty input values |
593 |
|
#define BCPABORT 6 // Sets to have bcpexec return SUCCEED_ABORT |
594 |
|
#define BCPODBC 7 // Sets ODBC canonical character output |
595 |
|
#define BCPKEEPIDENTITY 8 // Sets IDENTITY_INSERT on |
596 |
|
#define BCP6xFILEFMT 9 // DEPRECATED: Sets 6x file format on |
597 |
|
#define BCPHINTSA 10 // Sets server BCP hints (ANSI string) |
598 |
|
#define BCPHINTSW 11 // Sets server BCP hints (UNICODE string) |
599 |
|
#define BCPFILECP 12 // Sets clients code page for the file |
600 |
|
#define BCPUNICODEFILE 13 // Sets that the file contains unicode header |
601 |
|
#define BCPTEXTFILE 14 // Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically |
602 |
|
#define BCPFILEFMT 15 // Sets file format version |
603 |
|
|
604 |
|
// BCPFILECP values |
605 |
|
// Any valid code page that is installed on the client can be passed plus: |
606 |
|
#define BCPFILECP_ACP 0 // Data in file is in Windows code page |
607 |
|
#define BCPFILECP_OEMCP 1 // Data in file is in OEM code page (default) |
608 |
|
#define BCPFILECP_RAW (-1)// Data in file is in Server code page (no conversion) |
609 |
|
|
610 |
|
// bcp_collen definition |
611 |
|
#define SQL_VARLEN_DATA (-10) // Use default length for column |
612 |
|
|
613 |
|
// BCP functions |
614 |
|
DBINT SQL_API bcp_batch (HDBC); |
615 |
|
RETCODE SQL_API bcp_bind (HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT); |
616 |
|
RETCODE SQL_API bcp_colfmt (HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT); |
617 |
|
RETCODE SQL_API bcp_collen (HDBC, DBINT, INT); |
618 |
|
RETCODE SQL_API bcp_colptr (HDBC, LPCBYTE, INT); |
619 |
|
RETCODE SQL_API bcp_columns (HDBC, INT); |
620 |
|
RETCODE SQL_API bcp_control (HDBC, INT, void *); |
621 |
|
DBINT SQL_API bcp_done (HDBC); |
622 |
|
RETCODE SQL_API bcp_exec (HDBC, LPDBINT); |
623 |
|
RETCODE SQL_API bcp_getcolfmt (HDBC, INT, INT, void *, INT, INT *); |
624 |
|
RETCODE SQL_API bcp_initA (HDBC, LPCSTR, LPCSTR, LPCSTR, INT); |
625 |
|
RETCODE SQL_API bcp_initW (HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT); |
626 |
|
RETCODE SQL_API bcp_moretext (HDBC, DBINT, LPCBYTE); |
627 |
|
RETCODE SQL_API bcp_readfmtA (HDBC, LPCSTR); |
628 |
|
RETCODE SQL_API bcp_readfmtW (HDBC, LPCWSTR); |
629 |
|
RETCODE SQL_API bcp_sendrow (HDBC); |
630 |
|
RETCODE SQL_API bcp_setcolfmt (HDBC, INT, INT, void *, INT); |
631 |
|
RETCODE SQL_API bcp_writefmtA (HDBC, LPCSTR); |
632 |
|
RETCODE SQL_API bcp_writefmtW (HDBC, LPCWSTR); |
633 |
|
CHAR * SQL_API dbprtypeA (INT); |
634 |
|
WCHAR * SQL_API dbprtypeW (INT); |
635 |
|
|
636 |
|
#ifdef UNICODE |
637 |
|
#define bcp_init bcp_initW |
638 |
|
#define bcp_readfmt bcp_readfmtW |
639 |
|
#define bcp_writefmt bcp_writefmtW |
640 |
|
#define dbprtype dbprtypeW |
641 |
|
#define BCPHINTS BCPHINTSW |
642 |
|
|
643 |
|
#else |
644 |
|
#define bcp_init bcp_initA |
645 |
|
#define bcp_readfmt bcp_readfmtA |
646 |
|
#define bcp_writefmt bcp_writefmtA |
647 |
|
#define dbprtype dbprtypeA |
648 |
|
#define BCPHINTS BCPHINTSA |
649 |
|
#endif |
650 |
|
|
651 |
|
// SQL Server catalog extensions for distributed queries |
652 |
|
SQLRETURN SQL_API SQLLinkedServers (SQLHSTMT); |
653 |
|
SQLRETURN SQL_API SQLLinkedCatalogsA (SQLHSTMT, LPCSTR, SWORD); |
654 |
|
SQLRETURN SQL_API SQLLinkedCatalogsW (SQLHSTMT, LPCWSTR, SWORD); |
655 |
|
|
656 |
|
// SQL Server extensions for server enumeration |
657 |
|
HANDLE SQL_API SQLInitEnumServers(__in LPWSTR pwchServerName, __in LPWSTR pwchInstanceName); |
658 |
|
RETCODE SQL_API SQLGetNextEnumeration (HANDLE hEnumHandle,BYTE * prgEnumData,INT * piEnumLength); |
659 |
|
RETCODE SQL_API SQLCloseEnumServers (HANDLE hEnumHandle); |
660 |
|
|
661 |
|
#ifdef UNICODE |
662 |
|
#define SQLLinkedCatalogs SQLLinkedCatalogsW |
663 |
|
#else |
664 |
|
#define SQLLinkedCatalogs SQLLinkedCatalogsA |
665 |
|
#endif |
666 |
|
|
667 |
|
// BCP column format properties |
668 |
|
#define BCP_FMT_TYPE 0x01 |
669 |
|
#define BCP_FMT_INDICATOR_LEN 0x02 |
670 |
|
#define BCP_FMT_DATA_LEN 0x03 |
671 |
|
#define BCP_FMT_TERMINATOR 0x04 |
672 |
|
#define BCP_FMT_SERVER_COL 0x05 |
673 |
|
#define BCP_FMT_COLLATION 0x06 |
674 |
|
#define BCP_FMT_COLLATION_ID 0x07 |
675 |
|
|
676 |
|
// The following options have been deprecated |
677 |
|
|
678 |
|
#define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0) |
679 |
|
// Defines for use with SQL_FAST_CONNECT - only useable before connecting |
680 |
|
#define SQL_FC_OFF 0L // Fast connect is off |
681 |
|
#define SQL_FC_ON 1L // Fast connect is on |
682 |
|
#define SQL_FC_DEFAULT SQL_FC_OFF |
683 |
|
#define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6) |
684 |
|
#define SQL_AO_OFF 0L |
685 |
|
#define SQL_AO_ON 1L |
686 |
|
#define SQL_AO_DEFAULT SQL_AO_OFF |
687 |
|
|
688 |
|
// Define old names |
689 |
|
#define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD |
690 |
|
#define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP |
691 |
|
#define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY |
692 |
|
#define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS |
693 |
|
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING |
694 |
|
#define SQL_CA_SS_BASE_COLUMN_NAME SQL_DESC_BASE_COLUMN_NAME |
695 |
|
#define SQLDECIMALN 0x6a |
696 |
|
#define SQLNUMERICN 0x6c |
697 |
|
|
698 |
|
#ifdef __cplusplus |
699 |
|
} /* End of extern "C" { */ |
700 |
|
#endif /* __cplusplus */ |
701 |
|
#endif |
702 |
|
|
703 |
|
// End of odbcss.h |
704 |
|
|
705 |
|
|
|
|
|