Ich habe den folgenden Code:Wie funktioniert SET NOEXEC ON?
-- start of code
set noexec off
declare @requiredVersion int
declare @currentVersion int
set @requiredVersion = 5
set @currentVersion = 4
if (@currentVersion < @requiredVersion)
begin
print 'Please update your DB to version 5 before running this script.'
set noexec on
end
go
-- print 'Dummy'
insert into tblFooBar(name) values ('AAA')
go
set noexec off
-- end of code
Bitte beachten Sie, dass die Tabelle "tblfoobar" existiert nicht in der Datenbank. Wenn ich diesen Code ausführen, kommt die Meldung auf:
Please update your DB to version 5 before running this script. Msg 208, Level 16, State 1, Line 1 Invalid object name 'tblFooBar'.
Ich hatte erwartet, dass noexec auf ON darf jedoch nicht den „Msg 208“ Teil der Nachricht geben.
Dann noch einmal "set noexec on" kompiliert den Code, führt es nicht aus. Der Versuch, etwas in eine Tabelle einzufügen, die nicht existiert, ist ein Kompilierungsfehler - ich vermute. Wenn dies der Fall ist, sollte der Fehler "fehlendes Objekt" auftreten.
Jetzt lassen Sie mich Ihnen das seltsame Verhalten sagen, das ich beobachtet habe. Wenn ich den Kommentar aus der Zeile entfernen „- Print‚Dummy‘“
-- start of code
set noexec off
declare @requiredVersion int
declare @currentVersion int
set @requiredVersion = 5
set @currentVersion = 4
if (@currentVersion < @requiredVersion)
begin
print 'Please update your DB to version 5 before running this script.'
set noexec on
end
go
print 'Dummy'
insert into tblFooBar(name) values ('AAA')
go
und führen Sie den Code, erhalte ich nur die folgende Meldung.
Bitte aktualisieren Sie Ihre Datenbank auf Version 5, bevor Sie dieses Skript ausführen.
Dieses Mal gibt es keine Nachricht über fehlende Tabelle.
Kann mir bitte jemand dieses Verhalten erklären? Vielen Dank.
Nur um sicherzustellen, dass wir auf der gleichen Seite sind: Dies ist für SQL Server? welche Version? –
Entschuldigung, ich hätte es erwähnen sollen. Ich habe diesen Code mit MS SQL 2000 versucht. – ahmjt
Ich sehe das gleiche Verhalten in SQL 2005 –