smorestoredatabase我用SQLServerSMO把.bak还原到一个新的数据库,但是没有用。sqlserver是2012,smo对象版本来自最新的sdkversion11.0文件。bak是在同一台编码计算机上使用同一台本地计算机sqlmanagementstudio2012创建的。我收到的错误消息是:服务器“SERVER”的恢复失败。我的代码出了什么问题?stringdbPath=Path.Combine(@"d:mydata",dbName+"_db"+".mdf");stringlogPath=Path.Combine(@"d:mydata",dbName+"_db"+"_Log.ldf");恢复restore=newRestore();BackupDeviceItemdeviceItem=newBackupDeviceItem("d:template.BAK",DeviceType.File);restore.Devices.Add(deviceItem);restore.Database=dbName+"_db";RelocateFilerelocateDataFile=newRelocateFile("Data",dbPath);RelocateFilerelocateLogFile=newRelocateFile("Log",logPath);restore.RelocateFiles.Add(relocateDataFile);restore.RelocateFiles.Add(relocateLogFile);restore.Action=RestoreActionType.Database;restore.ReplaceDatabase=true;restore.SqlRestore(服务器);更新:我放弃了SMO解决方案,并试过using(SqlConnectionconnection=newSqlConnection("DataSource=server;userid=sa;password=xxxxx;")){using(SqlCommandcommand=newSqlCommand(@"RESTORE)DATABASEbeauty01FROMDISK='d:template.bak'WITHRECOVERY,MOVE'beauty1'TO'D:MyDatabeauty01_Data.mdf',MOVE'beauty1_log'TO'd:Mydatabeauty01_Lo??g.ldf',REPLACE",connection)){connection.Open();//添加SelectCommand的参数。command.CommandType=CommandType.Text;command.ExecuteNonQuery();}>>工作顺利。谢谢大家我成功地使用SMO恢复了数据库。我将分享我的代码。希望它有所帮助。这个解决方案的一个警告,它认为你只有一个主数据文件。获取匹配的日志和数据文件很棘手,在很多方面都可能出错。无论如何,请尝试让我知道这是否有帮助。以上就是C#学习教程的全部内容:smo恢复数据库共享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——usingSystem;使用System.Collections.Generic;使用System.ComponentModel;使用系统数据;使用System.IO;使用系统文本;使用系统线程;使用Microsoft.SqlServer.Management.Common;使用Microsoft.SqlServer.Management.Smo;使用Microsoft.Win32;命名空间DatabaseUtility{公共类BackupRestore{静态服务器srv;静态服务器连接连接;publicstaticvoidBackupDatabase(stringserverName,stringdatabaseName,stringfilePath){conn=newServerConnection();conn.ServerInstance=serverName;srv=新服务器(conn);尝试{Backupbkp=newBackup();bkp.Action=BackupActionType.Database;bkp.Database=数据库名称;bkp.Devices.AddDevice(filePath,DeviceType.File);bkp.增量=假;bkp.SqlBackup(srv);conn.Disconnect();连接=空;srv=空;}catch(SmoExceptionex){thrownewSmoException(ex.Message,ex.InnerException);}抓住(IOExceptionex){thrownewIOException(ex.Message,ex.InnerException);}}publicstaticvoidRestoreDatabase(stringserverName,stringdatabaseName,stringfilePath){conn=newServerConnection();conn.ServerInstance=serverName;srv=新服务器(conn);尝试{恢复res=newRestore();res.Devices.AddDevice(filePath,DeviceType.File);RelocateFileDataFile=newRelocateFile();字符串MDF=res.ReadFileList(srv).Rows[0][1].ToString();DataFile.LogicalFileName=res.ReadFileList(srv).Rows[0][0].ToString();DataFile.PhysicalFileName=srv.Databases[数据库名称].FileGroups[0].Files[0].FileName;RelocateFileLogFile=newRelocateFile();字符串LDF=res.ReadFileList(srv).Rows[1][1].ToString();LogFile.LogicalFileName=res.ReadFileList(srv).Rows[1][0].ToString();LogFile.PhysicalFileName=srv.Databases[数据库名称].LogFiles[0].FileName;res.RelocateFiles.Add(数据文件);res.RelocateFiles.Add(日志文件);res.Database=数据库名称;res.NoRecovery=假;res.ReplaceDatabase=true;res.SqlRestore(srv);conn.Disconnect();}catch(SmoExceptionex){thrownewSmoException(ex.Message,ex.InnerException);}catch(IOExceptionex){thrownewIOException(ex.Message,ex.InnerException);}}publicstaticServerGetdatabases(stringserverName){conn=newServerConnection();conn.ServerInstance=serverName;srv=新服务器(conn);conn.Disconnect();返回服务;}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
