* Fixed the potential error reported by Prefast code analysis * Use SQLSRV_ASSERT for checking NULL ptrs * For these AKV tests check env despite not AE connected * Added the driver option to run functional tests * Fixed connection pooling tests for more than one ODBC drivers * added driver option to pdo isPooled.php * Removed win32 ifdefs re connection resiliency (#802) * Set the driver argument for getDSN to null by default (#798) * Added the driver argument to getDSN * Dropped the driver argument but set to null as default * Removed the AE condition in locale support * Modified the AE condition for locale support * Changed int to SQLLEN to avoid infinite loop (#806) * Version 5.3.0 (#803) * Version 5.3.0 * Fixed the wrong replacements * Added comments block to m4 files * Use dnl for comments * Modified AE fetch phptypes test to insert only one row at a time and loop through php types (#801) * Modified AE fetch phptypes test to insert only one row at a time and loop through php types * Fixed formatting * Streamlined two very similar large column name tests (#807) * Streamlined two very similar large column name tests * Changed the EOL * Updates to change log and readme (#811) * Updates to change log and readme * Dropped support for Ubuntu 17 * Modified as per review comments * Fixed connection resiliency tests for Unix, updated AppVeyor for ODBC 17.2 * Fixed expected output * Fixed output and skipifs * Fixed skipifs and output * Fixed driver name * Updated installation instructions and sample script (#813) * Updated instructions and sample test for 5.3.0 RTW * Fixed sample code to adhere to php coding standard * Fixed cases and spaces * Modified NOTE for UB 18.04 based on review comments * Added 'exit' * Modified change log and readme based on review to PR 811 * Applied review comments * build output to debug appveyor failure * removed debug output * Streamlined two very similar large column name tests (#815) * Streamlined two very similar large column name tests * Added random number of test table names to avoid operand clash issues * Replaced to with for based on review * Changelog updated * changelog updated, test skipif changed to run on unix platforms * Fixed skipif typo * Fixed typo in skipif for pdo * Fixed some output for Travis * Moved error checking inside pdo connres tests * Added links back to changelog * Fixed output for sqlsrv connres tests * Fixed output * Fixed output again * Fixed skipifs for connres * Tweaked per review comments * Changes made to source and tests to support PHP 7.3 (#822) * Changes made to support php 7.3 * Correct use of the smart pointer * Fixed the tests for 7.3 * Some clean up for array_init() * Fixed formattings and clean up * One more fix * Initialising strings with nulls * Removed some spaces * Made array index spacing consistent * Fix for compilation problem * Fix for compilation problem again * Before freeing stmt in destructor check if dbh driver data is NULL (#829) * Issue 434 - set dbh driver data to NULL as well in destructor * Reverted the last change but instead check if dbh driver_data is already freed * Modified the comment * Added driver to the skipif conditions (#831) * Used git clone instead to download source from a branch of a tag (#832) * Modified the error handling to make it more flexible (#833) * Made error handling more flexible * Fixed a minor issue with a test * Enabled Spectre Mitigations (#836) * Incorporated changes in PR 634 to pdo_sqlsrv (#834) * Incorporated changes in PR 634 to pdo_sqlsrv * Reverted the changes because the array is for internal use only * Modified README re user's suggestion (#841) * Modified README re user's suggestion * Moved the if condition to the end as per review * Adding supporting for Azure AD access token (#837) * Adding supporting for Azure AD access token * Added more comments for the AD access token skipif files * Save the pointer to access token struct until after connecting * Clear the access token data before freeing the memory * Added a reference as per review * Feature request - new PDO_STMT_OPTION_FETCHES_DATETIME_TYPE flag for pdo_sqlsrv to return datetime as objects (#842) * Feature request - issue 648 * Fixed constructor for field_cache and added another test * Added tests for FETCH_BOUND * Added a new test for output param * Modified output param test to set attributes differently * Removed a useless helped function in a test * Combined two new tests into one as per review * Uncommented dropTable * Feature request - add ReturnDatesAsStrings option to statement level for sqlsrv (#844) * Added ReturnDatesAsStrings option to the statement level * Added new tests for ReturnDatesAsStrings at statement level * Added more datetime types as per review * Updated version 5.4.0-preview (#846) * Updated version 5.4.0-preview * Replaced 5.3 with 5.4 * Fixed sqlsrv datetime tests to connect with ColumnEncryption variables (#849) * Change log for 5.4.0-preview (#850) * Updated change log for 5.4.0-preview * Updated 5.4.0 preview to add two new feature requests * Modified change log as per review * Modified the wordings * Updated readme, changelog, and install instructions * Clear AKV data after setting the connection attribute or when exception is thrown (#854) * Dev (#820) * Fixed the potential error reported by Prefast code analysis * Use SQLSRV_ASSERT for checking NULL ptrs * For these AKV tests check env despite not AE connected * Added the driver option to run functional tests * Fixed connection pooling tests for more than one ODBC drivers * added driver option to pdo isPooled.php * Removed win32 ifdefs re connection resiliency (#802) * Set the driver argument for getDSN to null by default (#798) * Added the driver argument to getDSN * Dropped the driver argument but set to null as default * Removed the AE condition in locale support * Modified the AE condition for locale support * Changed int to SQLLEN to avoid infinite loop (#806) * Version 5.3.0 (#803) * Version 5.3.0 * Fixed the wrong replacements * Added comments block to m4 files * Use dnl for comments * Modified AE fetch phptypes test to insert only one row at a time and loop through php types (#801) * Modified AE fetch phptypes test to insert only one row at a time and loop through php types * Fixed formatting * Streamlined two very similar large column name tests (#807) * Streamlined two very similar large column name tests * Changed the EOL * Updates to change log and readme (#811) * Updates to change log and readme * Dropped support for Ubuntu 17 * Modified as per review comments * Fixed connection resiliency tests for Unix, updated AppVeyor for ODBC 17.2 * Fixed expected output * Fixed output and skipifs * Fixed skipifs and output * Fixed driver name * Updated installation instructions and sample script (#813) * Updated instructions and sample test for 5.3.0 RTW * Fixed sample code to adhere to php coding standard * Fixed cases and spaces * Modified NOTE for UB 18.04 based on review comments * Added 'exit' * Modified change log and readme based on review to PR 811 * Applied review comments * build output to debug appveyor failure * removed debug output * Streamlined two very similar large column name tests (#815) * Streamlined two very similar large column name tests * Added random number of test table names to avoid operand clash issues * Replaced to with for based on review * Changelog updated * changelog updated, test skipif changed to run on unix platforms * Fixed skipif typo * Fixed typo in skipif for pdo * Fixed some output for Travis * Moved error checking inside pdo connres tests * Added links back to changelog * Fixed output for sqlsrv connres tests * Fixed output * Fixed output again * Clear AKV data after connection or when exception is thrown * Modified tests too to skip some AKV tests without real credentials * Used assignment operator also free the existing memory * Change readme links to https * Change readme links to https Merging this commit to dev * Save meta data for the fetched result set (#855) * Save meta data on fetched result sets * Fixed a compilation error * Optimized some more -- metadata should be available when fetching * Skip conversion for strings of numeric values, integers, floats, decimals etc * Set encoding char for numeric data * Apply review * Added Mojave to macOS instructions (#862) Added Mojave to macOS instructions * Fixed the broken links of Appveyor status badge (#863) * Feature request 415 for sqlsrv (#861) * Modified how to send stream data using SQLPutData and SQLParamData (#865) * Updated instructions to include Ubuntu 18.10 (#869) * Feature request 415 for pdo_sqlsrv (#873) * Skipped some tests when running against Azure (#874) * Modified config files to add the compiler flag, /Qspectre (#878) * Merge the commit from master re survey image link (#880) * Fixed the flaws of decimal tests and added more debugging (#879) * Changed sample code to adhere to PSR standard (#887) * Decimal places for money types only (#886) * Version update for 5.5.0-preview (#889) * Fixed the error in the pdo decimal test (#890) * Removed warning messages while compiling extensions (#892) * Improve performance of Unicode conversions (#891) * Update sqlsrv_statement_format_money_scales.phpt Do not encrypt money / smallmoney fields in the test table * Change log 5.5.0-preview (#895) * updated docs for php 7.3 * Fixed broken links * Added back Ubuntu 18.10 ODBC instruction * Drop tests related to fake passwords (#905) * Initialize output param buffer when allocating extra space (#907) * Enable compiling extensions statically into PHP (#904) * Dropped dbname variable and set QUOTED_IDENTIFIER to ON (#911) * Skipped the non-applicables tests against Azure Data Warehouse (#913) * Support for Managed Identity for Azure resources (#875) * Changed version 5.6.0 (#918) * Initialize hasLoss before passing into Convert function (#919) * Added new tests for setting client buffer size related to issue 228 (#920) * Fixed load order issue in sqlsrv * Added source indexing for symbols (#922) * Modified linux and mac instructions for 5.6.0 RTW (#926) * Change log 5.6.0 (#921) * add Language option on connect * Updated AppVeyor to download ODBC driver 17.3 (#941) * Issue 937 - fixed ASSERT and added new tests (#940) * Changed travis to pull mcr.microsoft.com/mssql/server:2017-latest instead (#943) * Modified money tests to test the accuracies of floats (#944) * Fixed the returned values for PDOStatement::getColumnMeta (#946) * Onboarding to Azure Pipelines (#949) * Fixed the error in Issue 570 (#952) * Added a new status badge on readme (#953) * Added new tests for issue 569 (#951) * Fix issue 955 - errors building sqlsrv alone (#956) * Modified test_largeData for Linux CI (#954) * Issue 937 - fixed ASSERT and added new tests (#940) (cherry picked from commit12d01c9189
) * Fixed the returned values for PDOStatement::getColumnMeta (#946) (cherry picked from commit7309fb90b1
) * Fix issue 955 - errors building sqlsrv alone (#956) (cherry picked from commit15f61bd0b4
) * 5.6.1 hotfix * Updated change log * Tests modified for language option for SQL Azure (#963) * Update azure-pipelines.yml for Azure Pipelines [skip ci] (#964) * Added more checks for error conditions (#965) * Removed forward cursor condition * Added row and column count checks * Revert "Update azure-pipelines.yml for Azure Pipelines [skip ci] (#964)" (#969) This reverts commit7d389e0cff
. * Add new pdo_sqlsrv tests for utf8 encoding errors (#966) * Modified to check if qualified for AE connections (#967) * Fixed test and error message * Minor fixes * Test fixes * Addressed review comments * Fixed test failure * Made Azure AD tests more robust (#973) * Addressed review comments * Issue 970: use quotes for variables (#971) * Added batch query test * Fixed 32 bit test failure * Addressed review comments * Formatting changes * Used different skipif conditions for these two tests that require AE connections (#977) * Simplified insert logic * Modified get column meta method to reference saved metadata (#978) * Revert "Used different skipif conditions for these two tests that require AE connections (#977)" (#980) This reverts commitee3c85afa8
. * Fixed failing tests (#981) * Data Classification sensitivity metadata retrieval (#979) * Added more pdo tests to verify different error conditions (#984) * Fixed memory issues with data classification (#985) * Added connection string flag * Removed unix skipif * Fixed test output * Fixed pdo test * Changed flag name * Fixed test output * Updated links and versions (#987) (#988) * Fixed test output (again) * Fixed test output (again) * Fixed test output (again) * Replaced expected test output altogether * Fixed locale issue * Corrected formatting * Replaced EXPECTF with EXPECT * Fixed two failing tests (#991) * Redesigned some tests based on recent test results (#992) * Modified pipelines to connect using sqlcmd inside of the container instead (#995) * Added batch query * Added batch query test for pdo (#997) * Added a new test and modify a non LOB sqlsrv test (#1000) * Two index zval functions are macros in php 7.4 (#1001) * Replaced uint with size_t (#1004) * Check compiler version for php 74 (#1005) * Fixed tests that failed in php 7.4 (#1006) * Improve data caching with datetime objects (#1008) * Fixed for issues found by Semmle (#1011) * Removed unneeded constants * Fixed sqlsrv_free_stmt argument info * Fixed brace escape to avoid buffer overflow * Fixed brace escape and added test * Debugging test failure on Bamboo * Removed debugging output * Debugging test failure on Bamboo * Removed debugging output * Added more test cases * Changed range check to use strchr * Added pdo test * Fixed test and formatting * Addressed various issues with PHP 7.4 beta1 (#1015) * Updated dockerfile to use UB 18.04 and PHP 73 (#1016) * Added survey results (#1017) * Updated ODBC driver 17.4 (#1019) * Modified output.py to take a new argument and travis yml to use include for coveralls (#1020) * Used constants in memory stress tests for easier configuration (#1022) * Removed KSP related scripts and files (#1030) * Updated version to 5.7.0 preview (#1029) * Change log for 5.7.0 (#1028) * Modified how drivers handle query timeout settings (#1037) * Feature request: support extended string types (#1043) * Added the required file to ansi tests (#1047) * Always Encrypted v2 support (#1045) * Change to support ae-v2 * Add support for AE V2 * Added some descriptions and comments * Fixed PDO pattern matching * Updated key generation scripts * Fixed key script * Fixed char/nchar results, fixed formatting issues * Addressed review comments * Updated key scripts * Debugging aev2 keyword failure * Debugging aev2 keyword failure * Debugging aev2 keyword failure * Debugging aev2 keyword failure * Added skipif to ae v2 keyword test * Addressed review comments * Fixed braces and camel caps * Updated test descriptions * Added detail to test descriptions * Tiny change * Modified pdo tests to work with column encryption (#1051) * Saved php types with metadata when fetching (#1049) * Updated survey charts for Nov 2019 (#1057) * Updated all CIs (#1058) * Change log 5.7.1 preview (#1060) * Fix AKV keyword test for AE v2 behaviour (#1061) * Master (#936) 5.6.0 RTW * 5.6.1 hotfix (#959) * Updated links and versions (#987) * Fixed AKV keyword tests for AE v2 * Added comment * Free proc cache before starting test * Fixed comment * Update linux mac instructions for php 7.4 (#1062) * Updated appveyor yml to build 7.3 and 7.4 (#1065) * Fixes suggested by Semmle (#1068) * Fixes suggested by Semmle * Updated azure-pipelines * Added configurable options for setting locales (#1069) #1063 * Fixed the skipif wordings and styles (#1070) * Modified locale tests to work in both linux and mac (#1074) * Include sql_variant type for buffered queries (#1080) * Updated versions and year (#1082) * Change log for version 5.8.0 (#1083) * 5.8.0 rtw docs (#1086) * updated install instructions and changelog * removed md extensions * Addressed review comments * added path * Fixed link Co-authored-by: Jenny Tam <v-yitam@microsoft.com> Co-authored-by: Gert de Pagter <BackEndTea@users.noreply.github.com> Co-authored-by: Jannes Jeising <jannes@jeising.net> Co-authored-by: Guillaume Degoulet <34232764+gdegoulet@users.noreply.github.com>
456 lines
24 KiB
C
456 lines
24 KiB
C
#ifndef __msodbcsql_h__
|
|
#define __msodbcsql_h__
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------------
|
|
// File: msodbcsql.h
|
|
//
|
|
// Contents: Routines that use statement handles. This is a subset of the header file msodbcsql.h in the ODBC Driver.
|
|
//
|
|
// Contents: This SDK is not supported under any Microsoft standard support
|
|
// program or service. The information is provided AS IS without
|
|
// warranty of any kind. Microsoft disclaims all implied
|
|
// warranties including, without limitation, any implied
|
|
// warranties of merchantability or of fitness for a particular
|
|
// purpose. The entire risk arising out of the use of this SDK
|
|
// remains with you. In no event shall Microsoft, its authors, or
|
|
// anyone else involved in the creation, production, or delivery
|
|
// of this SDK be liable for any damages whatsoever (including,
|
|
// without limitation, damages for loss of business profits,
|
|
// business interruption, loss of business information, or other
|
|
// pecuniary loss) arising out of the use of or inability to use
|
|
// this SDK, even if Microsoft has been advised of the possibility
|
|
// of such damages.
|
|
// Microsoft Drivers 5.8 for PHP for SQL Server
|
|
// Copyright(c) Microsoft Corporation
|
|
// All rights reserved.
|
|
// MIT License
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the ""Software""),
|
|
// to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
// and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions :
|
|
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
// THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
// IN THE SOFTWARE.
|
|
//---------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
#if !defined(SQLODBC_VER)
|
|
#define SQLODBC_VER 1300
|
|
#endif
|
|
|
|
#if SQLODBC_VER >= 1300
|
|
|
|
#define SQLODBC_PRODUCT_NAME_FULL_VER_ANSI "Microsoft ODBC Driver 13 for SQL Server"
|
|
#define SQLODBC_PRODUCT_NAME_FULL_ANSI "Microsoft ODBC Driver for SQL Server"
|
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI "ODBC Driver 13 for SQL Server"
|
|
#define SQLODBC_PRODUCT_NAME_SHORT_ANSI "ODBC Driver for SQL Server"
|
|
|
|
#endif // SQLODBC_VER >= 1300
|
|
|
|
#define SQLODBC_PRODUCT_NAME_FULL_VER SQLODBC_PRODUCT_NAME_FULL_VER_ANSI
|
|
#define SQLODBC_PRODUCT_NAME_FULL SQLODBC_PRODUCT_NAME_FULL_ANSI
|
|
#define SQLODBC_PRODUCT_NAME_SHORT_VER SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI
|
|
#define SQLODBC_PRODUCT_NAME_SHORT SQLODBC_PRODUCT_NAME_SHORT_ANSI
|
|
|
|
#define SQLODBC_DRIVER_NAME SQLODBC_PRODUCT_NAME_SHORT_VER
|
|
|
|
// max SQL Server identifier length
|
|
#define SQL_MAX_SQLSERVERNAME 128
|
|
|
|
|
|
// SQLSetConnectAttr driver specific defines.
|
|
// Microsoft has 1200 thru 1249 reserved for Microsoft ODBC Driver for SQL Server usage.
|
|
// Connection attributes
|
|
|
|
#define SQL_COPT_SS_BASE 1200
|
|
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
|
|
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) // Perform code page translation
|
|
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) // Allow strong encryption for data
|
|
#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) // Multiple active result set per connection
|
|
#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27) // Used to set/get any driver-specific or ODBC-defined TXN iso level
|
|
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE (SQL_COPT_SS_BASE+28) // Trust server certificate
|
|
|
|
// SQLSetStmtAttr Microsoft ODBC Driver for SQL Server specific defines.
|
|
// Statement attributes
|
|
|
|
#define SQL_SOPT_SS_BASE 1225
|
|
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) // Text pointer logging
|
|
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) // Set NOBROWSETABLE option
|
|
#define SQL_SOPT_SS_COLUMN_ENCRYPTION (SQL_SOPT_SS_BASE+13)// Sets the column encryption mode
|
|
// Define old names
|
|
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
|
|
#define SQL_COPT_SS_BASE_EX 1240
|
|
#define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3) // Issues warning when data from the server had a loss during code page conversion.
|
|
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4) // dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check
|
|
#define SQL_COPT_SS_APPLICATION_INTENT (SQL_COPT_SS_BASE_EX+7) // Application Intent
|
|
#define SQL_COPT_SS_MULTISUBNET_FAILOVER (SQL_COPT_SS_BASE_EX+8) // Multi-subnet Failover
|
|
#define SQL_COPT_SS_TNIR (SQL_COPT_SS_BASE_EX+9) // Transparent Network IP Resolution
|
|
#define SQL_COPT_SS_COLUMN_ENCRYPTION (SQL_COPT_SS_BASE_EX+10)// Column Encryption Enabled or Disabled
|
|
#define SQL_COPT_SS_CEKEYSTOREPROVIDER (SQL_COPT_SS_BASE_EX+11)// Load a keystore provider or read the list of loaded keystore providers
|
|
#define SQL_COPT_SS_CEKEYSTOREDATA (SQL_COPT_SS_BASE_EX+12)// Communicate with loaded keystore providers
|
|
#define SQL_COPT_SS_TRUSTEDCMKPATHS (SQL_COPT_SS_BASE_EX+13)// List of trusted CMK paths
|
|
#define SQL_COPT_SS_CEKCACHETTL (SQL_COPT_SS_BASE_EX+14)// Symmetric Key Cache TTL
|
|
#define SQL_COPT_SS_AUTHENTICATION (SQL_COPT_SS_BASE_EX+15)// The authentication method used for the connection
|
|
#define SQL_COPT_SS_ACCESS_TOKEN (SQL_COPT_SS_BASE_EX+16)// The authentication access token used for the connection
|
|
|
|
// SQLColAttributes driver specific defines.
|
|
// SQLSetDescField/SQLGetDescField driver specific defines.
|
|
// Microsoft has 1200 thru 1249 reserved for Microsoft ODBC Driver for SQL Server usage.
|
|
|
|
#define SQL_CA_SS_BASE 1200
|
|
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) // dbcoltype/dbalttype
|
|
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) // dbcolutype/dbaltutype
|
|
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) // dbnumorders
|
|
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) // dbordercol
|
|
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) // dbvarylen
|
|
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) // dbnumcompute
|
|
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) // dbnextrow status return
|
|
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) // dbbylist
|
|
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) // dbaltcolid
|
|
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) // dbaltop
|
|
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) // dbcollen
|
|
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) // Column is hidden (FOR BROWSE)
|
|
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) // Column is key column (FOR BROWSE)
|
|
#define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14) // Column collation (only for chars)
|
|
#define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
|
|
#define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
|
|
#define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
|
|
|
|
// XML, CLR UDT, and table valued parameter related metadata
|
|
#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) // UDT catalog name
|
|
#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) // UDT schema name
|
|
#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) // UDT type name
|
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) // Name of the catalog that contains XML Schema collection
|
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) // Name of the schema that contains XML Schema collection
|
|
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) // Name of the XML Schema collection
|
|
#define SQL_CA_SS_CATALOG_NAME (SQL_CA_SS_BASE+25) // Catalog name
|
|
#define SQL_CA_SS_SCHEMA_NAME (SQL_CA_SS_BASE+26) // Schema name
|
|
#define SQL_CA_SS_TYPE_NAME (SQL_CA_SS_BASE+27) // Type name
|
|
|
|
// table valued parameter related metadata
|
|
#define SQL_CA_SS_COLUMN_COMPUTED (SQL_CA_SS_BASE+29) // column is computed
|
|
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY (SQL_CA_SS_BASE+30) // column is part of a unique key
|
|
#define SQL_CA_SS_COLUMN_SORT_ORDER (SQL_CA_SS_BASE+31) // column sort order
|
|
#define SQL_CA_SS_COLUMN_SORT_ORDINAL (SQL_CA_SS_BASE+32) // column sort ordinal
|
|
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE (SQL_CA_SS_BASE+33) // column has default value for all rows of the table valued parameter
|
|
|
|
// sparse column related metadata
|
|
#define SQL_CA_SS_IS_COLUMN_SET (SQL_CA_SS_BASE+34) // column is a column-set column for sparse columns
|
|
|
|
// Legacy datetime related metadata
|
|
#define SQL_CA_SS_SERVER_TYPE (SQL_CA_SS_BASE+35) // column type to send on the wire for datetime types
|
|
|
|
// force column encryption
|
|
#define SQL_CA_SS_FORCE_ENCRYPT (SQL_CA_SS_BASE+36) // indicate mandatory encryption for this parameter
|
|
|
|
// Data Classification
|
|
#define SQL_CA_SS_DATA_CLASSIFICATION (SQL_CA_SS_BASE+37) // retrieve data classification information
|
|
|
|
#define SQL_CA_SS_MAX_USED (SQL_CA_SS_BASE+38)
|
|
|
|
// Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only
|
|
#define SQL_IS_OFF 0L // Integrated security isn't used
|
|
#define SQL_IS_ON 1L // Integrated security is used
|
|
#define SQL_IS_DEFAULT SQL_IS_OFF
|
|
// Defines for use with SQL_COPT_SS_TRANSLATE
|
|
#define SQL_XL_OFF 0L // Code page translation is not performed
|
|
#define SQL_XL_ON 1L // Code page translation is performed
|
|
#define SQL_XL_DEFAULT SQL_XL_ON
|
|
// Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING
|
|
#define SQL_TL_OFF 0L // No logging on text pointer ops
|
|
#define SQL_TL_ON 1L // Logging occurs on text pointer ops
|
|
#define SQL_TL_DEFAULT SQL_TL_ON
|
|
// Defines for use with SQL_SOPT_SS_NOBROWSETABLE
|
|
#define SQL_NB_OFF 0L // NO_BROWSETABLE is off
|
|
#define SQL_NB_ON 1L // NO_BROWSETABLE is on
|
|
#define SQL_NB_DEFAULT SQL_NB_OFF
|
|
// Defines for use with SQL_SOPT_SS_COLUMN_ENCRYPTION
|
|
#define SQL_CE_DISABLED 0L // Disabled
|
|
#define SQL_CE_RESULTSETONLY 1L // Decryption Only (resultsets and return values)
|
|
#define SQL_CE_ENABLED 3L // Enabled (both encryption and decryption)
|
|
// Defines for use with SQL_COPT_SS_COLUMN_ENCRYPTION
|
|
#define SQL_COLUMN_ENCRYPTION_DISABLE 0L
|
|
#define SQL_COLUMN_ENCRYPTION_ENABLE 1L
|
|
#define SQL_COLUMN_ENCRYPTION_DEFAULT SQL_COLUMN_ENCRYPTION_DISABLE
|
|
// Defines for use with SQL_COPT_SS_CEKCACHETTL
|
|
#define SQL_CEKCACHETTL_DEFAULT 7200L // TTL value in seconds (2 hours)
|
|
// SQL_COPT_SS_ENCRYPT
|
|
#define SQL_EN_OFF 0L
|
|
#define SQL_EN_ON 1L
|
|
// SQL_COPT_SS_TRUST_SERVER_CERTIFICATE
|
|
#define SQL_TRUST_SERVER_CERTIFICATE_NO 0L
|
|
#define SQL_TRUST_SERVER_CERTIFICATE_YES 1L
|
|
// SQL_COPT_SS_WARN_ON_CP_ERROR
|
|
#define SQL_WARN_NO 0L
|
|
#define SQL_WARN_YES 1L
|
|
// SQL_COPT_SS_MARS_ENABLED
|
|
#define SQL_MARS_ENABLED_NO 0L
|
|
#define SQL_MARS_ENABLED_YES 1L
|
|
// SQL_TXN_ISOLATION_OPTION bitmasks
|
|
#define SQL_TXN_SS_SNAPSHOT 0x00000020L
|
|
|
|
// The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER
|
|
#define SQL_SS_ORDER_UNSPECIFIED 0L
|
|
#define SQL_SS_DESCENDING_ORDER 1L
|
|
#define SQL_SS_ASCENDING_ORDER 2L
|
|
#define SQL_SS_ORDER_DEFAULT SQL_SS_ORDER_UNSPECIFIED
|
|
|
|
// Driver specific SQL data type defines.
|
|
// Microsoft has -150 thru -199 reserved for Microsoft ODBC Driver for SQL Server usage.
|
|
|
|
#define SQL_SS_VARIANT (-150)
|
|
#define SQL_SS_UDT (-151)
|
|
#define SQL_SS_XML (-152)
|
|
#define SQL_SS_TABLE (-153)
|
|
#define SQL_SS_TIME2 (-154)
|
|
#define SQL_SS_TIMESTAMPOFFSET (-155)
|
|
|
|
// Local types to be used with SQL_CA_SS_SERVER_TYPE
|
|
#define SQL_SS_TYPE_DEFAULT 0L
|
|
#define SQL_SS_TYPE_SMALLDATETIME 1L
|
|
#define SQL_SS_TYPE_DATETIME 2L
|
|
|
|
// Extended C Types range 4000 and above. Range of -100 thru 200 is reserved by Driver Manager.
|
|
#define SQL_C_TYPES_EXTENDED 0x04000L
|
|
|
|
// SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
|
|
// VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns
|
|
|
|
#define SQL_SS_LENGTH_UNLIMITED 0
|
|
|
|
// User Data Type definitions.
|
|
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
|
|
|
|
#define SQLudtBINARY 3
|
|
#define SQLudtBIT 16
|
|
#define SQLudtBITN 0
|
|
#define SQLudtCHAR 1
|
|
#define SQLudtDATETIM4 22
|
|
#define SQLudtDATETIME 12
|
|
#define SQLudtDATETIMN 15
|
|
#define SQLudtDECML 24
|
|
#define SQLudtDECMLN 26
|
|
#define SQLudtFLT4 23
|
|
#define SQLudtFLT8 8
|
|
#define SQLudtFLTN 14
|
|
#define SQLudtIMAGE 20
|
|
#define SQLudtINT1 5
|
|
#define SQLudtINT2 6
|
|
#define SQLudtINT4 7
|
|
#define SQLudtINTN 13
|
|
#define SQLudtMONEY 11
|
|
#define SQLudtMONEY4 21
|
|
#define SQLudtMONEYN 17
|
|
#define SQLudtNUM 10
|
|
#define SQLudtNUMN 25
|
|
#define SQLudtSYSNAME 18
|
|
#define SQLudtTEXT 19
|
|
#define SQLudtTIMESTAMP 80
|
|
#define SQLudtUNIQUEIDENTIFIER 0
|
|
#define SQLudtVARBINARY 4
|
|
#define SQLudtVARCHAR 2
|
|
#define MIN_USER_DATATYPE 256
|
|
|
|
// Aggregate operator types.
|
|
// Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
|
|
|
|
#define SQLAOPSTDEV 0x30 // Standard deviation
|
|
#define SQLAOPSTDEVP 0x31 // Standard deviation population
|
|
#define SQLAOPVAR 0x32 // Variance
|
|
#define SQLAOPVARP 0x33 // Variance population
|
|
#define SQLAOPCNT 0x4b // Count
|
|
#define SQLAOPSUM 0x4d // Sum
|
|
#define SQLAOPAVG 0x4f // Average
|
|
#define SQLAOPMIN 0x51 // Min
|
|
#define SQLAOPMAX 0x52 // Max
|
|
#define SQLAOPANY 0x53 // Any
|
|
#define SQLAOPNOOP 0x56 // None
|
|
|
|
// SQLGetDiagField driver specific defines.
|
|
// Microsoft has -1150 thru -1199 reserved for Microsoft ODBC Driver for SQL Server usage.
|
|
|
|
#define SQL_DIAG_SS_BASE (-1150)
|
|
#define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
|
|
#define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
|
|
#define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
|
|
#define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
|
|
#define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
|
|
|
|
// SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
|
|
// Microsoft has -200 thru -299 reserved for Microsoft ODBC Driver for SQL Server usage.
|
|
|
|
#define SQL_DIAG_DFC_SS_BASE (-200)
|
|
#define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
|
|
#define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
|
|
#define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
|
|
#define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
|
|
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
|
|
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
|
|
#define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
|
|
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
|
|
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
|
|
#define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
|
|
#define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
|
|
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
|
|
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
|
|
#define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
|
|
#define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
|
|
#define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
|
|
#define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
|
|
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
|
|
#define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
|
|
#define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
|
|
#define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
|
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
|
|
#define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
|
|
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
|
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
|
|
#define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
|
|
#define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
|
|
#define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
|
|
#define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
|
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
|
|
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
|
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
|
|
#define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
|
|
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
|
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
|
|
#define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
|
|
#define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
|
|
#define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
|
|
#define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
|
|
#define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
|
|
#define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
|
|
#define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
|
|
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
|
|
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
|
|
#define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
|
|
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
|
|
#define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
|
|
#define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
|
|
#define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
|
|
#define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
|
|
#define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
|
|
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
|
|
#define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
|
|
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
|
|
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
|
|
#define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
|
|
#define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
|
|
#define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
|
|
#define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
|
|
#define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
|
|
#define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
|
|
#define SQL_DIAG_DFC_SS_MERGE (SQL_DIAG_DFC_SS_BASE-56)
|
|
|
|
// Severity codes for SQL_DIAG_SS_SEVERITY
|
|
#define EX_ANY 0
|
|
#define EX_INFO 10
|
|
#define EX_MAXISEVERITY EX_INFO
|
|
#define EX_MISSING 11
|
|
#define EX_TYPE 12
|
|
#define EX_DEADLOCK 13
|
|
#define EX_PERMIT 14
|
|
#define EX_SYNTAX 15
|
|
#define EX_USER 16
|
|
#define EX_RESOURCE 17
|
|
#define EX_INTOK 18
|
|
#define MAXUSEVERITY EX_INTOK
|
|
#define EX_LIMIT 19
|
|
#define EX_CMDFATAL 20
|
|
#define MINFATALERR EX_CMDFATAL
|
|
#define EX_DBFATAL 21
|
|
#define EX_TABCORRUPT 22
|
|
#define EX_DBCORRUPT 23
|
|
#define EX_HARDWARE 24
|
|
#define EX_CONTROL 25
|
|
|
|
// Data is defined to be past the end of the structure header.
|
|
// This is accepted by MSVC, GCC, and C99 standard but former emits
|
|
// unnecessary warning, hence it has to be disabled.
|
|
|
|
#if defined(_MSC_VER)
|
|
#pragma warning(push)
|
|
#pragma warning(disable:4200)
|
|
#endif
|
|
|
|
typedef struct AccessToken
|
|
{
|
|
unsigned int dataSize;
|
|
char data[];
|
|
} ACCESSTOKEN;
|
|
|
|
// Keystore Provider interface definition
|
|
typedef struct CEKeystoreContext
|
|
{
|
|
void *envCtx;
|
|
void *dbcCtx;
|
|
void *stmtCtx;
|
|
} CEKEYSTORECONTEXT;
|
|
|
|
typedef void errFunc(CEKEYSTORECONTEXT *ctx, const wchar_t *msg, ...);
|
|
|
|
#define IDS_MSG(x) ((const wchar_t*)(x))
|
|
|
|
typedef struct CEKeystoreProvider
|
|
{
|
|
wchar_t *Name;
|
|
int (__stdcall *Init)(CEKEYSTORECONTEXT *ctx, errFunc *onError);
|
|
int (__stdcall *Read)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int *len);
|
|
int (__stdcall *Write)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int len);
|
|
int (__stdcall *DecryptCEK)(
|
|
CEKEYSTORECONTEXT *ctx,
|
|
errFunc *onError,
|
|
const wchar_t *keyPath,
|
|
const wchar_t *alg,
|
|
unsigned char *ecek,
|
|
unsigned short ecekLen,
|
|
unsigned char **cekOut,
|
|
unsigned short *cekLen);
|
|
int(__stdcall *EncryptCEK)(
|
|
CEKEYSTORECONTEXT *ctx,
|
|
errFunc *onError,
|
|
const wchar_t *keyPath,
|
|
const wchar_t *alg,
|
|
unsigned char *cek,
|
|
unsigned short cekLen,
|
|
unsigned char **ecekOut,
|
|
unsigned short *ecekLen);
|
|
void (__stdcall *Free)();
|
|
} CEKEYSTOREPROVIDER;
|
|
|
|
// Communication between the driver and application via the CEKeystoreData structure
|
|
typedef struct CEKeystoreData
|
|
{
|
|
wchar_t *name;
|
|
unsigned int dataSize;
|
|
char data[];
|
|
} CEKEYSTOREDATA;
|
|
|
|
#if defined(_MSC_VER)
|
|
#pragma warning(pop)
|
|
#endif
|
|
|
|
// The following constants are for the Azure Key Vault configuration interface
|
|
#define AKV_CONFIG_FLAGS 0
|
|
#define AKVCFG_AUTHMODE 0x0000000F
|
|
#define AKVCFG_AUTHMODE_ACCESSTOKEN 0
|
|
#define AKVCFG_AUTHMODE_CLIENTKEY 1
|
|
#define AKVCFG_AUTHMODE_PASSWORD 2
|
|
#define AKVCFG_AUTHMODE_INTEGRATED 3
|
|
#define AKVCFG_AUTHMODE_CERTIFICATE 4
|
|
#define AKVCFG_NOAUTORENEW 0x00000010
|
|
|
|
#define AKV_CONFIG_PRINCIPALID 1
|
|
#define AKV_CONFIG_AUTHSECRET 2
|
|
#define AKV_CONFIG_ACCESSTOKEN 3
|
|
#define AKV_CONFIG_TOKENEXPIRY 4
|
|
#define AKV_CONFIG_MAXRETRIES 5
|
|
#define AKV_CONFIG_RETRYTIMEOUT 6
|
|
#define AKV_CONFIG_RETRYWAIT 7
|
|
|
|
#define AKV_CONFIG_RESET 255
|
|
#endif // __msodbcsql_h__
|
|
|