我創建一個存儲過程使用默認設置,如:刪除/插入SQL Server 2008上的篩選索引失敗?
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
Create PROCEDURE [dbo].[TestSP]
AS
BEGIN
set arithabort off
set arithignore on
--.....
END
這是好的。然後,我在表中爲數據庫中的非空值創建了過濾的唯一索引,然後我無法在SQL Server Management Studio中運行任何存儲過程。我得到的錯誤是這樣的:
DELETE(或INSERT)失敗,因爲以下SET選項具有不正確的設置:'ANSI_NULLS,QUOTED_IDENTIFIER'。驗證SET選項是否適用於計算列和/或過濾索引和/或查詢通知和/或XML數據類型方法和/或空間索引操作的索引視圖和/或索引。
我嘗試運行,如存儲過程:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
EXEC TestSP
或者
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
EXEC TestSP
我仍然得到上述錯誤。我很困惑。如何解決這個問題?
如果在創建存儲過程時設置了ansi_nulls,會發生什麼情況? – 2013-04-23 19:43:13
你爲什麼用這兩個設置'OFF'創建程序?你知道['SET ANSI_NULLS OFF'已被棄用,因爲SQL Server 2005](http://msdn.microsoft.com/en-us/library/ms143729(v = sql.90).aspx),對不對?停止使用它。 – 2013-04-23 19:46:47