SQL Server 2008を使用していて、現在のデータベース名を変数に変更しようとしています。私は通常これを明示的に、文USE myDatabaseName
で行う。 問題は、私がスクリプトを実行していて、データベース名を変更しないと、[master]
データベース内のすべてのテーブルが作成されるために発生します。SQL Server:変数を使用して現在のデータベースを変更する
私は以下を試しましたが、create tables
コードの残りの部分を[master]
に適用し続けるので、うまくいかないようです。動的SQLでUSE some_db
を実行
DECLARE @dbName CHAR(50)
DECLARE @SqlQuery varchar(50)
SET @dbName = 'MyNewDatabaseName'
IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = @dbName)
BEGIN
SELECT @SqlQuery = 'CREATE DATABASE ' + @dbName + 'COLLATE SQL_Latin1_General_CP1_CI_AS'
EXEC(@SqlQuery)
END
Select @SqlQuery = 'Use ' + @dbName
EXEC(@SqlQuery)
go
どのようにスクリプトを実行していますか? –
サーバレベルでの '新しいクエリ'として。 – Rick