"PROD"データベース(読み取り専用で複数のファイルグループで構成されています)を読み取り/書き込み可能な "EDIT"データベースにコピーするT-SQLスクリプトベースの方法を見つけたいと思います。 。
データベースコピーウィザードについて知っており、現在使用しています。ただし、これを自動化して、1つのスクリプトでPRODデータベースをバックアップから復元し、それをEDITデータベースにもコピーできるようにしたいと考えています。
T-SQLには「COPY DATABASE」コマンドがないようです。また、バックアップを2回復元する以外に、これを実現する他の方法を見つけることができません。本当に?これを行うためのより良い方法はありませんか?
私がしたいのはこれです:
できれば、SSMSまたはsqlcmd、あるいはその両方から実行できる1つのT-SQLスクリプトですべてを実行できます。
システムは、SQL Server 2005(バックアップ元)とSQL Server 2008(復元先)です。
ガントレットはそこにあります-誰がそれを手に入れますか? :-)
マーク
SSISにはデータベースのコピー機能があるため、SSISを介してT-SQLを実行する必要があり、そのプロセスのステップとしてデータベースのコピーを作成できます。
SQL Server Publishing Wizard は、コマンドライン引数を使用して自動化できます。
ヘルプページ から
次のコマンドは、MYSERVERという名前のマシンのデフォルトインスタンスから、ユーザー名が「Alice」、パスワードが「7h92-v6k3」のSQL Server認証を使用して、ファイルC:\ FooDB.sqlにFooDBデータベースをスクリプトします。
sqlpubwiz script -d FooDB -S MYSERVER -U Alice -P 7h92-v6k3 C:\FooDB.sql
したがって、そのスクリプトを取得したら、 [〜#〜] sqlcmd [〜#〜] を使用して、他のデータベースインスタンスでスクリプトを実行できます。
sqlcmd -S MYSERVER -U Alice -P 7h92-v6k3 -i C:\FooDB.sql -o
スクリプトを実行するログインにsysadmin権限がある場合は、次のようにできます。
SQLCMDまたはManagement StudioのSQLCMDモードを使用してスクリプトを実行できる場合は、SQLCMDを利用することもできます!! OSコマンドを実行してファイルをコピーする構文。
ただし、いずれの場合でも、これ(さらに言えば、データベースコピーウィザード)では、PRODデータベースをオフラインにしてコピーを行います。それが選択肢でない場合は、複数の復元が唯一の選択肢となる場合があります。
これは便利かもしれません:
これは役立ちますか: http://www.codeproject.com/KB/database/ScriptDatabase.aspx
データベースにデータをインポートするためのSQL Insertステートメントを含むデータベース全体をスクリプト化します。
バックアップ/復元をはるかに高速かつ簡単に:
SqlCmd -E -S localhost -Q "BACKUP DATABASE mydb TO DISK='c:\temp\mydb.bak'"
REM Make Sure connections are closed
SqlCmd -E -S localhost -Q "ALTER DATABASE PIDataCopy SET SINGLE_USER WITH ROLLBACK AFTER 60"
SqlCmd -E -S localhost -Q "RESTORE DATABASE PIDataCopy FROM DISK='c:\temp\mydb.bak WITH MOVE 'mydb_Data' TO 'C:\SQLData\PIDataCopy_Data', MOVE 'mydb_Log' TO 'C:\SQLData\PIDataCopy_Log', RECOVERY,REPLACE"
SqlCmd -E -S localhost -Q "ALTER DATABASE PIDataCopy SET MULTI_USER"