2012-01-15 15 views
1

データベースをバックアップするコードはthis tutorialです。ご覧のとおり、コードは同じです。エラーは、変数を入力した後に発生します。私が得るエラーはSMOOを使用してSQL Server 2005データベースをC#Windowsフォームアプリケーションでバックアップすると失敗しました

サーバー 'RITZEL-PC \ SQLEXPRESS'のバックアップに失敗しました。

をバックアップ機能:

public void BackupDatabase(String databaseName, String userName, String password,  String serverName, String destinationPath) 
    { 
     Backup sqlBackup = new Backup(); 

     sqlBackup.Action = BackupActionType.Database; 
     sqlBackup.BackupSetDescription = "ArchiveDataBase:" + DateTime.Now.ToShortDateString(); 
     sqlBackup.BackupSetName = "Archive"; 

     sqlBackup.Database = databaseName; 

     BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File); 
     ServerConnection connection = new ServerConnection(serverName, userName, password); 
     Server sqlServer = new Server(connection); 

     Database db = sqlServer.Databases[databaseName]; 

     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); 
    } 

ボタンをクリックし

private void BackUp_Btn_Click(object sender, EventArgs e) 
    { 
     String databaseName = @"D:\MY_THESIS\WORKING FILES\NNIT-RMS.mdf"; 
     String userName = "NNIT-Admin"; 
     String password = "password"; 
     String serverName = @"RITZEL-PC\SQLEXPRESS"; 
     String destinationPath = @"D:\"; 

     BackupDatabase(databaseName,userName,password,serverName,destinationPath); 

    } 

私は、画像を投稿することができないのです、まだ私はスクリーンショットをアップロードした データベース情報。ここを参照してください:http://img268.imageshack.us/img268/9250/sqlg.jpg

+0

'databaseName'は、SQL Server Expressに接続されているデータベースの**論理データベース名**である必要があります。 'MYDATABASE' - そして**ではなく、** .mdfファイルのファイル名全体です。私はSMOがあなたに別の '.mdf'ファイルをバックアップすることを許可していないと思う。 –

+0

上記のスクリーンショットを見ると、私はバックアップしたいデータベースのデータベース情報のスクリーンショットを置いた。これは、sqlserver2005のデータベースノードに表示される名前です。私はそれを間違っているのですか? – RMSP

+0

SMOで「スタンドアロン」の.mdfファイルをバックアップすることはできません。 ** .mdfファイルをSQL Server Expressに**添付**し**論理**データベース名を付けて、その論理データベース名をSMOバックアップに使用する必要があります。この「オンザフライでの.mdfのアタッチ」機能はちょっと混乱していて、まったく率直に言えば使用しないでください - SQL Server 2012(「Denali」)では廃止される予定です –

答えて

0

ドン」再びuはちょうどそれらを削除し、次のようにバックアップを呼び出し、文字列値を割り当てる:

BackupSqlDatabase("YourDataBaseName","sa","password","ServerName","C:\\YourDataBaseName.bak"); 
1

ためにバックアップするデータベースに、プロセスのSQL Serverが持つ必要として実行されていますバックアップの対象となるフォルダの正しいフォルダのアクセス許可。

私の経験からは、SQLサーバープロセスがローカル管理者として実行されていない限り、ルートディレクトリに書き込む権限がありません。

SSMSを開いて、目的のパスにデータベースをバックアップしようとすると、同じ問題が発生する可能性があります。

ドライブのルートまたはマイドキュメントフォルダ以外の場所にバックアップフォルダを変更してみてください。

関連する問題