使用具有分层解决方案体系结构的C#恢复SQL Server数据库

使用具有分层解决方案体系结构的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(请求 请求) 位于

我有三层应用程序。我正在尝试使用C代码备份SQL Server数据库。我从UI传递所选文件夹路径,并在数据层中执行代码。在select数据库的位置,它给了我一个错误

无法检索此请求的数据。连接类型无效。
在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你的解决方案对我有用