雖然我寫了一些T-SQL查詢與NOEXEC ON
,我經歷過的SQL Server有趣的行爲,我很好奇爲什麼會發生。有時候,我只拿到有趣的行爲「NOEXEC ON」
命令已成功。
如我期望的消息,但有時我得到的一個或多個
(影響0行(S))
消息。
我知道SET NOEXEC ON
命令編譯查詢,但不執行它,所以我覺得我不應該得到任何
(0受影響行(S))
消息。
在第一個例子,一切看起來都很正常。
SET NOEXEC ON
INSERT INTO Test (column1) VALUES ('etc')
結果:
命令已成功。
但在第二個例子中,我覺得不順心的事...
SET NOEXEC ON
DELETE FROM Test
結果:
(0行(或多個)受影響)
在我用臨時表中的第三示例:
CREATE TABLE #tmp (id INT IDENTITY(1, 1), idX INT)
SET NOEXEC ON
INSERT INTO #tmp (idX) VALUES (1)
DELETE FROM Test
SET NOEXEC OFF
DROP TABLE #tmp
結果:
(0行(S)的影響)
最後我只GO
添加到我的查詢,我認爲結果很有趣
CREATE TABLE #tmp (id INT IDENTITY(1, 1), idX INT)
SET NOEXEC ON
GO
INSERT INTO #tmp (idX) VALUES (1)
DELETE FROM Test
SET NOEXEC OFF
DROP TABLE #tmp
結果:
(0行( s)受影響)
(0 row(s)affected)
嗯,我無法重載任何情況,我得到「(0 row(s)affected)」。無論是在Denali還是在SQL Server 2008中。您是否僅僅使用SSMS執行這些SQL文本而沒有任何特殊選項或操作? – usr
是的,我在SQL Server 2008 R2上使用SSMS執行這些SQL文本,但沒有使用任何特殊選項。 – ogun