35

SQL サーバー上にデータベースを作成し、winforms c# でフロント エンド ユーザー アプリケーションを作成しました。それは稼働しており、正常に動作していますが、クライアントから、新入社員のトレーニング用にテスト バージョンをセットアップするように依頼されました。これにより、「実際の」ライブ データベースに影響を与えずにトレーニング中にダミー データを入力できます。

データベースをインストールしたとき、すべてスクリプトを作成しましたが、その後状況が変わったため、すべてのテーブルを再度スクリプトで作成する必要は特にありません。

データベース (およびそのデータ) を同じサーバー上に別の名前で複製するための高速で便利な方法はありますか?

編集(トニー・ホプキンソンの投稿に続く)

私はここまで持っています

exec sp_addumpdevice 'Disk','MyDatabaseBackup',N'D:\MyDatabaseBackup' 
Restore Database MyDatabase From MyDatabaseBackup With File = 1, 
Move 'MyDatabase' To N'C:\Program Files\Microsoft SQL 
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST.mdf', 
Move 'MyDatabase_Log' To N'C:\Program Files\Microsoft SQL 
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST_log.ldf', 
NORECOVERY,  NOUNLOAD,  STATS = 10 
RESTORE LOG [MyDatabaseTEST] FROM  [MyDatabaseBackup] WITH  FILE = 2,  NOUNLOAD,  STATS = 10 
exec sp_dropdevice MyDatabaseBackup 

しかし、次のエラーメッセージが表示されます

メッセージ 3234、レベル 16、状態 2、行 2 論理ファイル 'MyDatabase' はデータベース 'MyDatabase' の一部ではありません。論理ファイル名を一覧表示するには、RESTORE FILELISTONLY を使用します。メッセージ 3013、レベル 16、状態 1、行 2 RESTORE DATABASE が異常終了しています。メッセージ 3154、レベル 16、状態 4、行 6 バックアップ セットには、既存の 'MyDatabaseTEST' データベース以外のデータベースのバックアップが保持されています。メッセージ 3013、レベル 16、状態 1、行 6 RESTORE LOG が異常終了しています。デバイスがドロップされました。

4

7 に答える 7

40

SQL Server Management Studio でデータベースのコピー オプションを使用する

ここに画像の説明を入力

于 2012-10-03T08:30:07.720 に答える
3

最初に、現在のデータベースの完全なバックアップを実行します。もちろん、これは持っています:)

あなたはそれを別のものに復元します

たとえば、次のようなもの

exec sp_addumpdevice 'Disk','LiveDataBackup',N'Insert backup file name here including path'
Restore Database TestData From LiveDataBackup With File = 1,
Move 'LiveData' To N'Path to where sqlserver expects the mdfs to be\TestData.mdf',
Move 'LiveData_Log' To N'Path to where sqlserver expects the ldf to be\TaxData1.ldf',
NORECOVERY,  NOUNLOAD,  STATS = 10
RESTORE LOG [TestData] FROM  [LiveDataBackup] WITH  FILE = 2,  NOUNLOAD,  STATS = 10
exec sp_dropdevice LiveDataBackup

上記では、ライブ データベースの名前が巧妙に LiveData で、test が TestData であると仮定しています。

mdf と ldf のパスは、SQL サーバーのバージョンとインスタンス名によって異なります。

C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\ のようになります。

MSSQL11 は SQL 2012 であり、DENALI は私のインスタンス名であり、デフォルトで C:\Program Files にインストールされているためです。

また、with replace がないため、再度実行する場合は、テスト データベースを削除する必要があります。

GUI からこれを行う方法はおそらくありますが、UI を自分のやりたいことに関連付けようとするのは大規模な PIA であることがわかりました。

于 2012-10-03T08:57:11.970 に答える
2

MS SQLServer 2012 を使用する場合、3 つの基本的な手順を実行する必要があります

最初に、ソース DB の構造のみを含む .sql ファイルを生成します。

=> ソース DB を右クリックし、[タスク]、[スクリプトの生成] => ウィザードに従って、.sql ファイルをローカルに保存できます

次に、.sql ファイルでソース データベースを宛先データベースに置き換えます。

=>宛先ファイルを右クリックし、.sqlファイルを開き、新しいクエリとCtrl-Hまたは(編集-検索と置換-クイック置換)を押します

最後に、データを入力します

=> detination DBを右クリックし、次にTasks、次にImport Data => Data source drop dowを「.net Framework data procider for sql server」に設定+ DATAの下に接続文字列テキストフィールドを設定ex: Data Source=Mehdi\SQLEXPRESS; Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15
=>転送先も同様 =>転送したいテーブルにチェックを入れるか、「source :.....」の横にチェックを入れて全てチェック

あなたは終わった。

于 2015-01-09T11:08:49.090 に答える
1
  • データベースをバックアップ ファイルにダンプする
  • ダンプからデータベースを再作成します-これは実行可能なスクリプトです-別の名前で(スクリプトに変更する必要があります)

あなたはフォローすることができます (これ)

于 2012-10-03T08:29:02.020 に答える
0

同じサーバー上にデータベースを作成する必要がある場合は、空のデータベースを作成するだけです。それを右クリックして[復元]を選択し、コピーを作成するデータベースを選択して[OK]をクリックします。

于 2020-05-31T17:08:08.763 に答える