Tom*_*son 1 t-sql sql-server sql-server-2008
昨天我在MSSQL 2008 db中的视图上添加了一些索引.之后,似乎所有存储过程都需要在QUOTED_IDENTIFIER设置为ON的情况下运行,即使那些不使用有问题的视图也是如此.
为什么会这样?这是我可以在数据库上配置的东西,还是我必须更新所有存储过程以将QUOTED_IDENTIFIER设置为ON?我认为这对于不使用视图的存储过程是必需的.
这些存储过程是否与视图所基于的基表有关?引用创建索引视图:
创建聚簇索引后,尝试修改视图基础数据的任何连接也必须具有创建索引所需的相同选项设置.如果执行语句的连接没有正确的选项设置,SQL Server将生成错误并回滚任何将影响视图结果集的INSERT,UPDATE或DELETE语句.有关更多信息,请参阅影响结果的SET选项.
当你想到它时,这很明显 - 当你触摸这些基表时,你可能会更新视图的内容,因此你继承了与创建索引时相同的责任.
您可以在多个级别设置默认值:
任何应用程序都可以通过在连接到服务器后执行SET语句来显式覆盖任何默认设置.SET语句会覆盖所有先前的设置,并可用于在应用程序运行时动态打开和关闭选项.选项设置仅适用于当前连接会话.
OLE DB和ODBC应用程序可以通过在连接字符串中指定选项设置来指定在连接时生效的选项设置.选项设置仅适用于当前连接会话.
使用"控制面板"中的ODBC应用程序或ODBC SQLConfigDataSource函数为SQL Server ODBC数据源指定的SET选项.
数据库的默认设置.您可以使用ALTER DATABASE或SQL Server Management Studio中的对象资源管理器指定这些值.
服务器的默认设置.您可以使用SQL Server Management Studio中的sp_configure或Object Explorer来指定这些值,以设置名为user options的服务器配置选项.