使用具有分层解决方案体系结构的C#恢复SQL Server数据库
我有三层应用程序。我正在尝试使用C代码备份SQL Server数据库。我从UI传递所选文件夹路径,并在数据层中执行代码。在select数据库的位置,它给了我一个错误 无法检索此请求的数据。连接类型无效。使用具有分层解决方案体系结构的C#恢复SQL Server数据库,c#,sql-server,database-restore,C#,Sql Server,Database Restore,我有三层应用程序。我正在尝试使用C代码备份SQL Server数据库。我从UI传递所选文件夹路径,并在数据层中执行代码。在select数据库的位置,它给了我一个错误 无法检索此请求的数据。连接类型无效。 在Microsoft.SqlServer.Management.Smo.Enumerator.Process(对象连接信息,请求请求) 在Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorData(请求 请求) 位于
在Microsoft.SqlServer.Management.Smo.Enumerator.Process(对象连接信息,请求请求)
在Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorData(请求 请求)
位于Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbCollation(字符串 dbname)
位于Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(布尔值 在服务器中)
在Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer()中 我创建了一个带有一层的示例项目并执行了代码。机器运转良好。我找不到问题 我使用的代码如下
public void BackupData(string filePath)
{
Backup sqlBackup = new Backup();
sqlBackup.Action = BackupActionType.Database;
sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
DateTime.Now.ToShortDateString();
string fileName = "\\ArchiveDataBase.bak";
sqlBackup.BackupSetName = "Archive";
sqlBackup.Database = "SanasaLibrarySystem";
BackupDeviceItem deviceItem = new BackupDeviceItem(filePath + fileName, DeviceType.File);
DataConnection dataConnection = new DataConnection();
ServerConnection connection = new ServerConnection(dataConnection.DataBaseConnection);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases["SanasaLibrarySystem"];
sqlBackup.Initialize = true;
sqlBackup.Checksum = true;
sqlBackup.ContinueAfterError = true;
sqlBackup.Devices.Add(deviceItem);
sqlBackup.Incremental = false;
sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
sqlBackup.FormatMedia = false;
sqlBackup.SqlBackup(sqlServer);
}
您使用什么作为连接字符串??显然,关于你如何尝试联系,有一些可疑之处——首先调查一下!我的连接字符串如下:connectionString=“server=(local);Initial Catalog=Master;Integrated Security=True;”;DataConnection是使用上面的连接字符串保存SqlConnection的类,如果您只是尝试像这样初始化服务器会怎么样:
server sqlServer=new server(“(本地)”)代码>(或者在这里使用本地机器的名称)。这确实是一种奇怪的行为……如果我像上面那样启动服务器,它工作正常。有人能解释一下吗。谢谢marc你的解决方案对我有用