資料庫預存程序中的 SET ANSI_NULLS ON 突然全部變成 OFF,歷來未遇過此情況,尋求原因。
根據 SQL Server 文件,建立或修改預存程序時,資料庫引擎會**保存**該時期的 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 設定。執行預存程序時,會使用這些**原始儲存的設定**,而忽略目前工作階段的設定。因此,若在建立/修改預存程序的工作階段中 ANSI_NULLS 為 OFF,則該預存程序會永久儲存為 OFF。
SET ANSI_NULLS ON; SET QUOTED_IDENTIFIER ON;。SET 陳述式以保證正確性。其他 SET 選項(如 ARITHABORT、ANSI_WARNINGS、ANSI_PADDING)不會被儲存,執行時遵循目前工作階段設定。若需固定這些選項,亦須在程序內部顯式設定。