我有一个名为
如果我直接将文件恢复到
backupdb.bak
的SQL Server 2005数据库备份。我想将其还原到数据库MyDatabase
中。但在还原之前,我需要检查是否已经存在MyDatabase
。如果存在,则创建一个名为MyDatabaseNew
的新数据库,并将备份文件还原到这个新数据库中。如果我直接将文件恢复到
MyDatabase
,则该过程运行良好。但是当我检查MyDatabase
的存在并尝试创建名为MyDatabaseNew
的新数据库时,它会出现错误:
我的代码如下:服务器servername的还原失败
Restore restore = new Restore();
restore.Action = RestoreActionType.Database;
CreateDatabase(MyDatabaseNew);
restore.Database = MyDatabaseNew;
restore.ReplaceDatabase = true;
BackupDeviceItem deviceItem = new BackupDeviceItem("C:\\backupdb.bak",DeviceType.File);
restore.Devices.Add(deviceItem);
SqlConnection sqlCon = new SqlConnection("Data Source=.;Initial Catalog=MyDatabaseNewIntegrated Security=True;User ID=uid; Pwd=Pwd");
ServerConnection connection = new ServerConnection(sqlCon);
sqlCon.Open();
Microsoft.SqlServer.Management.Smo.Server smoServer = new Server(new ServerConnection("."));
if (File.Exists("C:\\backupdb.bak"))
// restore
restore.SqlRestore(smoServer);
if (sqlCon.State == ConnectionState.Open)
sqlCon.Close();
如果 MyDatabase
已经存在,那么我创建数据库的代码如下,我会将 MyDatabaseNew
作为该方法的参数进行传递:
public void CreateDatabase(string NewDBName)
{
string str;
SqlConnection myConn = new SqlConnection("Server=.;Integrated security=True;
database=master;User ID=uid;Password=Pwd");
str = "CREATE DATABASE " + NewDBName + "";
SqlCommand myCommand = new SqlCommand(str, myConn);
try
{
myConn.Open();
myCommand.ExecuteNonQuery();
MessageBox.Show("New DataBase is Created Successfully", "Database Creation",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString(), "Database Creation", MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
finally
{
if (myConn.State == ConnectionState.Open)
{
myConn.Close();
}
}
}
有人能告诉我哪里出了问题吗?
RelocateFiles
。 - Marek Grzenkowicz