ISO 选项的作用

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

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

由于用户和应用程序可能会随时打开和关闭 SET 选项,存储过程和触发器的开发人员还应分别在上面列出的 SET 选项处于打开和关闭状态的情况下对其存储过程和触发器进行认真测试。 这可以确保存储过程和触发器正常工作,而无论特定连接在调用过程和触发器时打开哪些选项。 如果存储过程或触发器需要对这些选项之一进行特殊设置,则应该在触发器或存储过程的开始处发出 SET 语句。 此 SET 语句仅在触发器或存储过程执行期间保持有效;过程或触发器结束后,即会还原原始设置。

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

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

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

另请参阅

执行语句 (ODBC)
SQLDriverConnect
SQLBrowseConnect