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-Library 的应用程序通常不会打开这些选项。 运行同一 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)也设置为“打开”。 如果数据源中或 SQLDriverConnect 或 SQLBrowseConnect 上指定了 AnsiNPW=NO,则 SQL Server Native Client odbc 驱动程序不会在 上设置这些选项。
与前面所述的 ISO 选项一样 SQL Server Native Client,如果在数据源或 SQLDriverConnect 或 SQLBrowseConnect 上指定 QuotedID=NO,则 ODBC 驱动程序不会打开 QUOTED_IDENTIFIER 选项。
若要允许驱动程序知道 SET 选项的当前状态,ODBC 应用程序不应使用 Transact-SQL SET 语句来设置这些选项。 它们只应使用数据源或连接选项设置这些选项。 如果应用程序发出 SET 语句,则驱动程序可能会生成错误的 SQL 语句。