Bei der Ausführung der folgenden in SSMS;Einstellung NOEXEC ON führt immer noch "USE" Anweisung
if not exists (select * from sys.databases where name = 'SWFUAT')
begin
print 'The UAT database (SWFUAT) does not exist...'
set noexec on;
end
go
use SWFUAT;
go
Folgendes wird angezeigt;
Die UAT Datenbank (SWFUAT) existiert nicht ...
Msg 911, Ebene 16, Status 1, Zeile 20
Datenbank 'SWFUAT' existiert nicht. Stellen Sie sicher, dass der Name korrekt eingegeben wurde.
Sollte der Compiler nicht einfach die "use
" Anweisung ignorieren?
@ shA.t Sie die Dokumentation Zustände korrekt waren jedoch mit beispielsweise ersetzen soll; > Wenn SET NOEXEC aktiviert ist, kompiliert SQL Server jeden Batch von Transact-SQL-Anweisungen, führt sie jedoch nicht aus. Und das Beispiel [Microsoft] [MSLink] bietet Shows 'noexec' wird wie oben gezeigt verwendet? [MSLink]: https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(NOEXEC_TSQL);((SQL12.SWB.TSQLRESULTS.F1);;;;;;;;;((SQL12.SWB .TSQLQUERY.F1); k (MISCELLANEOUSFILESPROJECT); k (DevLang-TSQL) & rd = true – Ray
"USE wird sowohl zur Kompilier- als auch zur Ausführungszeit ausgeführt und tritt sofort in Kraft." - https://msdn.microsoft.com/de-de NZ/library/ms188366.aspx – Blorgbeard