2011-07-25 3 views
0

SQL Server 2005、Win7、VS2008。古いバージョンの製品から新しいバージョンへデータベースをアップグレードする必要があります。新しいデータベースを作成し、古いデータベースを新しい状態にアップグレードするスクリプトを1つ作成したいと思います。私は以下のSQLスクリプトを実行しようとしており、エラーが発生しています(データベースのないマシンで実行している場合)。SQL ServerクライアントのDBアップグレードスクリプトの問題

データベース 'MyDatabase'が存在しません。名前が正しく入力された であることを確認してください。

質問です:

  1. どのように私は
  2. アップグレードパーツでデータベース名を指定することができますが、アップグレードが存在する/作成、書き込みには良い方法ですか?

SQLコード:

USE [master] 

-- DB upgrade part 
if exists (select name from sysdatabases where name = 'MyDatabase') 
BEGIN 
    IF (<Some checks that DB is new>) 
    BEGIN 
    raiserror('MyDatabase database already exists and no upgrade required', 20, -1) with log 
    END 
    ELSE 
    BEGIN 
    USE [MyDatabase] 
    -- create some new tables 
    -- alter existing tables 
    raiserror('MyDatabase database upgraded successfully', 20, -1) with log 
    END 
END 

-- DB creating part 
CREATE DATABASE [MyDatabase]; 

-- create new tables 

答えて

0

あなたは通常、明示的にスクリプト内でデータベース名を指定する必要はありません。代わりに、SQLを事前に処理するか、$$DATABASENAME$$トークンを実際のデータベースの名前に置き換えてください。

0

データベースが存在しない場合、クエリは解析されないため、USE [MyDatabase]をスクリプトに含めることはできません。

代わりに、2つの別々のスクリプト(アップグレード用と新しいデータベース用)を用意してください。その後、IFブランチ内のスクリプトをxp_cmdshellと動的SQLを介して呼び出すことができます。次のリンクは、あなたが続くことができるいくつかの例があります。

http://abhijitmore.wordpress.com/2011/06/21/how-to-execute-sql-using-t-sql/

PowerShellは簡単にだけでなく、この作業を行うことができるが、私はそれを使用して、任意の直接の経験を持っていません。

関連する問題