我試圖創建數據庫備份並恢復到另一個數據庫,備份正在工作但恢復失敗,原因是我在創建備份時創建的數據庫名稱也像 使用主 創建數據庫[Samplename] 然後生成所有表數據 所以,當我嘗試使用C#來恢復,它試圖創建新的數據庫爲Samplename沒有我的新SAMPLEDB,那麼它給例外如何用新的數據庫名稱恢復Sqlserver .bak文件使用c#
The file 'C:\Program Files (x86)\Microsoft SQL
Server\MSSQL11.BIZSQL\MSSQL\DATA\Product Company.mdf' cannot be
overwritten. It is being used by database 'Sample Product Company'.
File 'Sample Product Company' cannot be restored to 'C:\Program Files
(x86)\Microsoft SQL Server\MSSQL11.BIZSQL\MSSQL\DATA\Sample Product
Company.mdf'. Use WITH MOVE to identify a valid location for the file.
The file 'C:\Program Files (x86)\Microsoft SQL
Server\MSSQL11.BIZSQL\MSSQL\DATA\Sample Product Company_log.ldf' cannot be overwritten.
It is being used by database 'Sample Product Company'.
File 'Sample Product Company_log' cannot be restored to 'C:\Program Files
(x86)\Microsoft SQL Server\MSSQL11.BIZSQL\MSSQL\DATA\Sample Product
Company_log.ldf'. Use WITH MOVE to identify a valid location for the file.
Problems were identified while planning for the RESTORE statement. Previous
messages provide details.
RESTORE DATABASE is terminating abnormally.
你可以請指導我如何恢復與新數據庫的數據庫中SQlser2012R2
示例代碼還原:
using (SqlConnection con = new SqlConnection(ConnectionString))
{
con.Open();
string UseMaster = "USE master";
SqlCommand UseMasterCommand = new SqlCommand(UseMaster, con);
UseMasterCommand.ExecuteNonQuery();
int iReturn = 0;
// If the database does not exist then create it.
string strCommand = string.Format("SET NOCOUNT OFF; SELECT COUNT(*) FROM master.dbo.sysdatabases where name=\'{0}\'", DatabaseName);
using (SqlCommand sqlCmd = new SqlCommand(strCommand, con))
{
iReturn = Convert.ToInt32(sqlCmd.ExecuteScalar());
}
if (iReturn == 0)
{
SqlCommand command = con.CreateCommand();
command.CommandText = "CREATE DATABASE " + DatabaseName;
command.ExecuteNonQuery();
}
ServerConnection serverConnection = new ServerConnection(con);
Microsoft.SqlServer.Management.Smo.Server srv = new Microsoft.SqlServer.Management.Smo.Server(serverConnection);
string Alter1 = @"ALTER DATABASE [" + DatabaseName + "] SET Single_User WITH Rollback Immediate";
SqlCommand Alter1Cmd = new SqlCommand(Alter1, con);
Alter1Cmd.ExecuteNonQuery();
string Restore = @"RESTORE Database [" + DatabaseName + "] FROM DISK = N'" + fileName + @"' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10";
SqlCommand RestoreCmd = new SqlCommand(Restore, con);
RestoreCmd.ExecuteNonQuery();
string Alter2 = @"ALTER DATABASE [" + DatabaseName + "] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, con);
Alter2Cmd.ExecuteNonQuery();
}
我測試了你的代碼,我沒有收到任何異常,恢復成功。當你調試時,你對變量「fileName」有什麼價值 – StackTrace
文件名是:RestoreBackup。我在另一臺機器上創建備份並嘗試在我的系統中恢復,然後它的工作正常,但是如果我在我的機器上創建和恢復它不工作..我的機器有Windows8.1和Sqlserver2012 R2和另一臺機器有Windows7和Sqlserver2012R2 ..「 –