2016-08-09 23 views
-1

Ich möchte diese Abfrage ausführen, um die Datenbank während der Ausführung eines Skripts zu ändern.Variable zur Verwendung [Datenbank]

DECLARE @Command nvarchar(200) 

SELECT @Command = 'USE [Database1]' 

--PRINT @Command 
EXECUTE sp_sqlexec @Command 

Was ist daran falsch?

+0

versuchen dynamische wollen Aber es funktioniert. Haben Sie einen Fehler? – Whencesoever

+1

** sp_sqlexec ** wird noch unterstützt? Ich dachte, wir hätten das seit der frühen SQL-Version verpasst. Probieren Sie stattdessen sp_executesql oder EXEC (@Command) aus. – Zerotoinfinity

+0

Vielleicht ist es erwähnenswert, da 'USE' funktioniert, können Sie dies nicht in einem Batch ausführen und dann Code im selben Batch ausführen, in dem es ein' USE' erwartet im aktuellen Umfang. Jeder Code, der im Rahmen von 'USE' ausgeführt werden muss, muss auch im selben Batch ausgeführt werden (z. B. in der dynamischen SQL-Zeichenfolge). – Charleh

Antwort

2

Versuchen Sie einfach, es zu benutzen, bevor das Skript

USE [Database1] 
GO 

Sie müssen für diese Variable nicht verwenden, aber wenn man dann

DECLARE @Command nvarchar(200), @DatabaseName nvarchar(200) 
SET @Command = 'USE @DatabaseName 
     GO;' 
SET @DatabaseName = 'Database1' 
EXECUTE sp_executesql @Command, '@DatabaseName', @DatabaseName 

oder

EXEC ('Use Database1') 
+0

Ich glaube, dass OP dies in dynamischer Abfrage erreichen möchte. – Zerotoinfinity

+0

Ja, danke. Ich habe den asnwer –

+0

My up vote aktualisiert. Bitte erwähnen Sie auch über sp_executesql, weil sp_sqlexec ziemlich alt ist (SQL Server 6.5 - wenn ich richtig bin) – Zerotoinfinity