当我右键单击“对象资源管理器”中的“服务器名称”并选择“属性 - >连接”时,我可以看到“默认连接选项”中没有勾选任何内容。此外,我可以看到当我运行sp_configure 'user options'
(高级选项)时,config_value为0.与此同时,当我执行“SELECT @@OPTIONS
”时,我可以看到该值为5496.结果证明是真的因为已启用的选项实际上正在运行。
问题是:为什么我在SMSS和sp_configure中有误导性信息,为什么它与@@OPTIONS
值不同BOL saying
用户选项中的位位置与
@@OPTIONS
中的位位置相同。每个连接都有自己的@@OPTIONS
函数,表示配置环境。登录到Microsoft SQL Server时,用户会收到一个默认环境,该环境将当前用户选项值分配给@@OPTIONS
。
答案 0 :(得分:2)
"user options"作为服务器级别设置(我的粗体)
用户选项选项允许您更改SET选项的默认值(如果服务器的默认设置不合适)。 用户可以使用SET语句覆盖这些默认值。
现在,检查SSMS中的连接选项,然后运行SQL事件探查器。您会注意到SSMS(和其他客户端)发出了许多设置@@ OPTIONS。
的SET命令所以没有选项在服务器级别设置(你看到的是零)。 SSMS将为您设置它们,与SQLOLEDB,SQLNCLI,ODBC,DB-Lib等驱动程序相同。
SQL Server Native Client ODBC驱动程序和SQL Server的SQL Server Native Client OLE DB提供程序在连接时自动将QUOTED_IDENTIFIER设置为ON。这可以在ODBC数据源,ODBC连接属性或OLE DB连接属性中配置。对于来自DB-Library应用程序的连接,SET QUOTED_IDENTIFIER的默认值为OFF。