簡體   English   中英

存儲過程中的 SET QUOTED_IDENTIFIER

[英]SET QUOTED_IDENTIFIER in stored procedure

當我的生產數據庫恢復到開發環境時,我遇到了一個問題。 在那個數據庫中,我有一個設置SET QUOTED_IDENTIFIER OFF的存儲過程。 我不確定為什么要這樣做(我沒有寫)。 執行在生產中運行良好,但是,當我在 dev 中運行時出現以下錯誤:

INSERT 失敗,因為以下 SET 選項的設置不正確:“QUOTED_IDENTIFIER”。 驗證 SET 選項是否正確用於計算列上的索引視圖和/或索引和/或過濾索引和/或查詢通知和/或 XML 數據類型方法和/或空間索引操作。

如果我將其設置為on ,則存儲過程在 dev 中運行良好。 我確實找到了一些有關重建索引的信息,可能會導致此問題。 我嘗試在桌子上rebuild all內容,但並沒有改變問題。 有什么想法嗎?

prod 也有SET ANSI_NULLS ONSET NOCOUNT ON

使用quoted_identifier

1. SET QUOTED_IDENTIFIERON ,則雙引號內的字符被視為標識符。 所以下面的命令會成功。

    SET QUOTED_IDENTIFIER ON 
    GO
    CREATE TABLE dbo.”Table”
    (id int,”Function” VARCHAR(20)) 
    GO

如果我們保持SET QUOTED_IDENTIFIER OFF那么上面的語句就會失敗。

在生產環境中使用quoted_identifier 創建的對象

2. 您可以通過以下查詢找到在您的生產環境中創建的對象,其中標識符設置為ON

SET QUTOED_IDENTIFIERS設置為ON

    SELECT OBJECT_NAME _
    (object_id) _
    FROM sys.sql_modules _
    WHERE uses_quoted_identifier = 1

因此,如果您關閉quoted_identifier 狀態,那么您的對象就不會在開發環境中創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM