Während ich einige T-SQL-Abfragen mit NOEXEC ON
schrieb, erlebte ich interessante Verhalten von SQL Server und ich bin neugierig, warum es passiert ist. Manchmal habe ich nurInteressantes Verhalten in "NOEXEC ON"
Befehl (e) erfolgreich.
Nachricht als ich erwartet habe, aber manchmal habe ich ein oder mehr
(0 Zeile (n) betroffen)
Nachrichten.
Ich weiß, dass SET NOEXEC ON
Befehl kompiliert Abfrage sie aber nicht ausführen, so dass ich denke, dass ich keine
(0 Zeile (n) betroffen)
Nachrichten.
Im ersten Beispiel sieht alles normal aus.
SET NOEXEC ON
INSERT INTO Test (column1) VALUES ('etc')
Ergebnis:
Befehl (e) erfolgreich.
Aber im zweiten Beispiel denke ich, dass etwas schief geht ...
SET NOEXEC ON
DELETE FROM Test
Ergebnis:
(0 Zeile (n) betroffen)
Im dritten Beispiel I temp-Tabelle verwendet:
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
Ergebnis:
(0 Zeile (n) betroffen)
Und fügte ich schließlich nur GO
auf meine Frage, ich glaube Ergebnis
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
Ergebnis ist interessant:
(0 Zeile (s) betroffen)
(0 Reihe (n) betroffen)
Hm Ich kann keinen Fall repro wo ich bekomme "(0 Zeile (n) betroffen)". Weder in Denali noch in SQL Server 2008. Haben Sie diese SQL-Texte nur mit SSMS ohne spezielle Optionen oder Aktionen ausgeführt? – usr
Ja, ich habe diese SQL-Texte mit SSMS unter SQL Server 2008 R2 ausgeführt und keine speziellen Optionen verwendet. – ogun