Sql-Server
如何忽略 SSMS (sql server management studio) sql server ansi 設置?
Management Studio 中的選項
在 Management studio Tools->Options->Query Execution->SQL Server 上設置了一些選項,這些選項優於在數據庫級別設置的相同選項。
數據庫級別的選項
在管理工作室上,您右鍵點擊數據庫,您可以看到許多選項的預設值:(下圖中黃色)
使用sys.databases,您可以使用 T_SQL 獲取這些選項。
會話級別的選項
使用sys.dm_exec_sessions您可以獲取為目前會話設置的選項。
問題
有沒有辦法確保數據庫設置優於管理工作室設置?
我考慮過制定一個計劃,並使用OPTION (USE PLAN) 但這會產生超出此問題範圍的其他後果。
如果您詢問是否可以為伺服器上發生的每個連接強制執行數據庫預設值,那麼沒有。只有在連接級別沒有設置矛盾的東西時,這些預設值才會生效。
在 SSMS 中的任何單個批處理中,您可以使用
SET ANSI_NULLS ON
、SET ANSI_NULLS OFF
、SET QUOTED_IDENTIFIER ON
等語句來控制解釋以下語句的方式。使用儲存過程會稍微複雜一點:
創建過程時,它會記住
ANSI_NULLS
andQUOTED_IDENTIFIER
選項的目前值,並在對該過程的任何呼叫中使用它們,但對於其他設置,例如ARITHABORT
和ANSI_PADDINGS
- 對於那些你需要SET <setting> ON/OFF
在過程中使用來修復行為。有關此情況的更多描述,請參閱產品文件中的 CREATE PROCEDURE (Transact-SQL) 的互操作性部分。