检索对象QUOTED_IDENTIFIER(和相关的ANSI)设置的方法?

时间:2009-08-07 12:38:49

标签: sql-server

有没有办法识别是否使用SET QUOTED_IDENTIFIER打开或关闭对象? (不仅是这个设置选项,我还在寻找一个脚本来识别与该对象相关的所有ANSI设置)

这是对问题的跟进link - 1Link-2

我在单个表(获得索引视图)上得到了SET QUOTED_IDENTIFIER错误。我已经验证了所有设置,脚本都很好。并且它使用正确的设置完美创建。

在应用了一些数据库修复程序(不是我们的脚本)后,它会突然发出错误。

注意:抱歉打开一个新主题,我得到任何可能的解决方案到我的第一个link - 1主题,认为它已经死了

2 个答案:

答案 0 :(得分:2)

对于代码和检查约束:

SELECT 
    OBJECTPROPERTYEX (OBJECT_ID('MyProc'), 'ExecIsQuotedIdentOn')
    OBJECTPROPERTYEX (OBJECT_ID('MyCK'), 'IsQuotedIdentOn')

我在系统视图或函数中找不到表/索引的任何内容。

答案 1 :(得分:0)

select
    'Object created with dangerous SET Option' [Finding]
    ,o.[type_desc] [Type]
    ,QUOTENAME( SCHEMA_NAME( o.[schema_id] ) ) [Schema]
    ,QUOTENAME( OBJECT_NAME( sm.[object_id] ) ) [Name]
    ,sm.[uses_ansi_nulls] [ANSI NULL]
    ,sm.[uses_quoted_identifier] [QUOTED]
    ,sm.[definition]
from [sys].[sql_modules] sm
join [sys].[objects] o on o.[object_id] = sm.[object_id]
    and (
        sm.[uses_ansi_nulls] != 1
        or sm.[uses_quoted_identifier] != 1
        )
    and o.[is_ms_shipped] = 0;