Mentre scrivevo alcune query T-SQL con NOEXEC ON
, ho riscontrato un comportamento interessante di SQL Server e sono curioso di sapere perché è successo. A volte ho ottenuto soloComportamento interessante in "NOEXEC ON"
Comando (i) riuscito.
messaggio come mi aspettavo, ma a volte ho avuto uno o più
(0 row (s) affected)
messaggi.
so che SET NOEXEC ON
comando compila interrogazione, ma non esegue esso, quindi penso che non dovrei ottenuto alcun
(0 row (s) affected)
messaggi.
Nel primo esempio, tutto sembra normale.
SET NOEXEC ON
INSERT INTO Test (column1) VALUES ('etc')
Risultato:
Command (s) con successo.
Ma nel secondo esempio, penso che qualcosa vada storto ...
SET NOEXEC ON
DELETE FROM Test
risultati:
(0 row (s) affected)
Nel terzo esempio ho usato tabella temporanea:
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
risultati:
(0 row (s) affected)
E infine ho aggiunto solo GO
alla mia domanda, penso risultato è interessante
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
Risultato:
(0 fila (s) interessato)
(0 riga (e) interessata)
Hm Non riesco a ripro alcun caso dove ottengo "(0 righe (s) interessate". Né in Denali né in SQL Server 2008. Hai appena eseguito questi testi SQL utilizzando SSMS senza opzioni o azioni speciali? – usr
Sì, ho eseguito questi testi SQL utilizzando SSMS su SQL Server 2008 R2 e non ho usato nessuna opzione speciale. – ogun