で T-SQL クエリを書いているときにNOEXEC ON
、SQL Server の興味深い動作を経験したので、なぜそうなったのか興味があります。時々私はただ得た
コマンドが正常に実行されました。
メッセージは期待どおりですが、1 つまたは複数のメッセージが表示されることもありました
(影響を受ける行はありません)
メッセージ。
コマンドはクエリをコンパイルしますが、実行しないことを知っているSET NOEXEC ON
ので、何も取得すべきではないと思います
(影響を受ける行はありません)
メッセージ。
最初の例では、すべてが正常に見えます。
SET NOEXEC ON
INSERT INTO Test (column1) VALUES ('etc')
結果:
コマンドが正常に実行されました。
しかし、2番目の例では、何かがおかしいと思います...
SET NOEXEC ON
DELETE FROM Test
結果:
(影響を受ける行はありません)
3 番目の例では、一時テーブルを使用しました。
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
結果:
(影響を受ける行はありません)
最後に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
結果:
(影響を受ける行はありません)
(影響を受ける行はありません)