私は3層のアプリケーションを持っています。C# コードを使用して SQL Server データベースをバックアップしようとしています。選択したフォルダー パスを UI から渡し、データ レイヤーでコードを実行します。選択したデータベースの場所で、エラーが発生します。
このリクエストのデータを取得できませんでした。接続タイプが無効です。
Microsoft.SqlServer.Management.Smo.Enumerator.Process (オブジェクト connectionInfo、要求要求)
で Microsoft.SqlServer.Management.Smo.ExecutionManager.GetEnumeratorData (要求要求) で Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbCollation
(文字列 dbname )
Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetDbComparer(Boolean inServer)
で Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitializeStringComparer() で
1 つのレイヤーでサンプル プロジェクトを作成し、コードを実行します。それは正常に動作します。問題が見つかりませんでした
次のようにコードを使用しました。
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);
}