スタックオーバーフローに同様の質問がたくさんあることは知っていますが、私の要求を完全に満たすものはありませんか?
1 - 2 つの .mdf .ldf ファイルを含むデータベースをアタッチしたく
ない 2 - ファイルは 1 つの .bak ファイルにすぎない
3 - Microsoft SQL Management を使用したくない。
4 - プログラムで行う必要がありますか? (私の場合は c#)
スタックオーバーフローに同様の質問がたくさんあることは知っていますが、私の要求を完全に満たすものはありませんか?
1 - 2 つの .mdf .ldf ファイルを含むデータベースをアタッチしたく
ない 2 - ファイルは 1 つの .bak ファイルにすぎない
3 - Microsoft SQL Management を使用したくない。
4 - プログラムで行う必要がありますか? (私の場合は c#)
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 ファイルへの書き込みアクセスが必要です。
.NET ライブラリの SMO オブジェクトを見てください。ここには、データベースの復元に使用できる復元オブジェクトがあります。SQL Server Management Studio は、この SMO オブジェクトを使用して構築されているため、SSMS で実行できることはすべて C# で実行できます。