【问题标题】:way to retrieve the objects QUOTED_IDENTIFIER (and associated ANSI) settings?检索对象 QUOTED_IDENTIFIER(和相关的 ANSI)设置的方法?
【发布时间】:2020-03-20 05:43:40
【问题描述】:

有没有办法确定对象是在 SET QUOTED_IDENTIFIER 开启还是关闭的情况下创建的? (不仅是这个设置选项,我正在寻找一个脚本来识别与对象关联的所有 ANSI 设置)

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

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

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

注意:很抱歉打开一个新线程,我无法为我的第一个link - 1 线程找到任何可能的解决方案,以为它已经死了

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    对于代码和检查约束:

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

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

    【讨论】:

    • 创建表时,QUOTED IDENTIFIER 选项始终在表的元数据中存储为 ON,即使在创建表时该选项设置为 OFF。
    【解决方案2】:
    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2020-09-05
      • 2014-04-14
      • 2010-09-18
      相关资源
      最近更新 更多