如何恢复使用恢复类Microsoft.SqlServer.Management.Smo命名空间 [英] how to restore using restore class of Microsoft.SqlServer.Management.Smo namespace
问题描述
public void RestoreDatabase(String databaseName, String filePath,
String serverName, String userName, String password, String dataFilePath, String logFilePath)
{
Restore sqlRestore = new Restore();
BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);
sqlRestore.Devices.Add(deviceItem);
sqlRestore.Database = databaseName;
ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlRestore.Action = RestoreActionType.Database;
String dataFileLocation = dataFilePath;
String logFileLocation = logFilePath;
db = sqlServer.Databases[databaseName];
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.SqlRestore(sqlServer);
db = sqlServer.Databases[databaseName];
db.SetOnline();
sqlServer.Refresh();
}
在调用此方法还原操作失败,此消息
On calling this method the restore operation failed with this message
还原失败服务器
'MDM04\SQLEXPRESS'。
Restore failed for Server 'MDM04\SQLEXPRESS'.
mdm04是我的计算机名
mdm04 is my computer name
的内部异常是
System.Data.SqlClient.SqlError:
逻辑文件'VRV'不是
数据库VRV的一部分使用RESTORE
FILELISTONLY来列出逻辑文件
的名字。
"System.Data.SqlClient.SqlError: Logical file 'vrv' is not part of database 'vrv'. Use RESTORE FILELISTONLY to list the logical file names."
VRV是数据库名称
我应该怎么做才能恢复文件
What should I do to restore the file
推荐答案
问题是在这里。
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation));
下面的databaseName手段,在数据库备份文件中所指定的数据库的名称。但你指定目标数据库名称。
here databaseName means, name of the database specified in db backup file. But you are specifying the destination db name.
将其更改为原数据库名称
Change it to original db name
下面的示例代码读取备份文件DB名
here the sample code to read db names from backup file
DataTable dtFileList = sqlRestore.ReadFileList(serverName);
string dbLogicalName = dtFileList.Rows[0][0].ToString();
string dbPhysicalName = dtFileList.Rows[0][1].ToString();
string logLogicalName = dtFileList.Rows[1][0].ToString();
string logPhysicalName = dtFileList.Rows[1][1].ToString
这篇关于如何恢复使用恢复类Microsoft.SqlServer.Management.Smo命名空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!