ISO 选项的作用

ODBC 标准与 ISO 标准紧密匹配,ODBC 应用程序需要 ODBC 驱动程序的标准行为。 为了使其行为与 ODBC 标准中定义的行为更紧密地一致,SQL Server Native Client ODBC 驱动程序始终使用在其连接的 SQL Server 版本中提供的任何 ISO 选项。

当 SQL Server Native Client ODBC 驱动程序连接到 SQL Server 实例时,服务器检测到客户端正在使用 SQL Server Native Client ODBC 驱动程序并设置多个选项。

驱动程序会发出这些语句本身;ODBC 应用程序不执行任何作来请求它们。 设置这些选项可使使用驱动程序的 ODBC 应用程序更易于移植,因为服务器行为随后与 ISO 标准匹配。

基于 DB 库的应用程序通常不会打开这些选项。 运行同一 SQL 语句时,在 ODBC 或 DB-Library 客户端之间观察到不同行为的站点不应假定这与 SQL Server Native Client ODBC 驱动程序存在问题。 它们应首先使用与 SQL Server Native Client ODBC 驱动程序使用相同的 SET 选项在 DB-Library 环境中重新运行该语句。

由于用户和应用程序可以随时打开和关闭 SET 选项,因此存储过程和触发器的开发人员还应注意测试其过程和触发器,同时打开和关闭上面列出的 SET 选项。 这可确保过程和触发器正常工作,无论特定连接在调用过程或触发器时可能设置了哪些选项。 需要其中一个选项特定设置的触发器或存储过程应在触发器或存储过程开始时发出 SET 语句。 此 SET 语句仅对触发器或存储过程的执行有效;过程或触发器结束时,将还原原始设置。

连接到 SQL Server 实例时,还会打开第四个 SET 选项(CONCAT_NULL_YIELDS_NULL)。 如果在数据源或 SQLDriverConnectSQLBrowseConnect 上指定了 AnsiNPW=NO,则 SQL Server Native Client ODBC 驱动程序不会设置这些选项。

与前面提到的 ISO 选项一样,如果数据源或 SQLDriverConnectSQLBrowseConnect 上指定 QuotedID=NO,SQL Server Native Client ODBC 驱动程序不会打开QUOTED_IDENTIFIER选项。

若要允许驱动程序知道 SET 选项的当前状态,ODBC 应用程序不应使用 Transact-SQL SET 语句来设置这些选项。 它们只应使用数据源或连接选项设置这些选项。 如果应用程序发出 SET 语句,驱动程序可以生成不正确的 SQL 语句。

另请参阅

执行语句 (ODBC)
SQLDriverConnect
SQLBrowseConnect