C#コードを使用してSQLデータベースを復元しようとしています。バックアップは正常に機能しています。しかし、データベースを復元すると、エラーが発生します。Microsoft.SqlServer.Management.Smo;
この操作にはを使用しています。エラーは{"System.Data.SqlClient.SqlError:RESTOREはデータベース'TempDb'を処理できません。これは、このセッションで使用されているためです。この操作を実行するときは、マスターデータベースを使用することをお勧めします。"}
いくつかの投稿では、データベースをマスターに設定すると書かれています。私もそれを試しましたが、同じエラーが発生します。接続文字列:connectionString = @ "server =(local); Initial Catalog = Master; Integrated Security = True;";
私のコードは次のとおりです。
openFileDialog1.ShowDialog();
string databaseName = "TempDb";
Restore sqlRestore = new Restore();
BackupDeviceItem deviceItem = new BackupDeviceItem(openFileDialog1.FileName, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = databaseName;
DataConnection dataConnection = new DataConnection();
ServerConnection connection = new ServerConnection(dataConnection.DataBaseConnection);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlRestore.Action = RestoreActionType.Database;
String dataFileLocation = db.FileGroups[0].Files[0].FileName;
String logFileLocation = db.LogFiles[0].FileName;
db = sqlServer.Databases[databaseName];
RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation));
sqlRestore.ReplaceDatabase = true;
sqlRestore.Complete += new ServerMessageEventHandler(sqlRestore_Complete);
sqlRestore.PercentCompleteNotification = 10;
sqlRestore.PercentComplete += new PercentCompleteEventHandler(sqlRestore_PercentComplete);
sqlRestore.SqlRestore(sqlServer);
db = sqlServer.Databases[databaseName];
db.SetOnline();
sqlServer.Refresh();