3

スタックオーバーフローに同様の質問がたくさんあることは知っていますが、私の要求を完全に満たすものはありませんか?

1 - 2 つの .mdf .ldf ファイルを含むデータベースをアタッチしたく
ない 2 - ファイルは 1 つの .bak ファイルにすぎない
3 - Microsoft SQL Management を使用したくない。
4 - プログラムで行う必要がありますか? (私の場合は c#)

4

2 に答える 2

17

T-SQL コマンドを送信することで、データベースを復元できます (selectクエリを送信するのと同じです)。例えば:

restore database NameOfYourDb
from    disk = 'c:\backups\NameOfYourDb.bak'
with    recovery,
        move 'NameOfYourDb_Data' to 'c:\data\NameOfYourDb.mdf',
        move 'NameOfYourDb_Log' to 'c:\data\NameOfYourDb.log'

.bak ファイルに保存できるファイルの最小数は 2 です。すべてのデータベースには、少なくとも 1 つのデータ ファイルと 1 つのログ ファイルがあります (拡張子はそれぞれ .mdf と .log です)。

復元は SQL Server サービスによって行われることに注意してください。そのサービスの観点からパスを提供する必要があります。SQL Server が実行されているアカウントには、.bak ファイルへの読み取りアクセスと、.mdf および .log ファイルへの書き込みアクセスが必要です。

于 2013-09-28T19:08:24.453 に答える
1

.NET ライブラリの SMO オブジェクトを見てください。ここには、データベースの復元に使用できる復元オブジェクトがあります。SQL Server Management Studio は、この SMO オブジェクトを使用して構築されているため、SSMS で実行できることはすべて C# で実行できます。

于 2013-09-28T19:02:07.367 に答える