3

データベースのバックアップを取ると、データベースが存在しないというエラーが表示されますが、データベースを正常にアタッチでき、データの挿入や更新などの他のプロセスは正常に機能します。しかし、データベースのバックアップを取ると、以下のエラーが発生します。

エラーのスクリーン ショットとバックアップ ボタンのコードを表示します

string cnstr="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\fees_data.mdf;Integrated Security=True;User Instance=True;"



SqlConnection connect;
        connect = new SqlConnection(cnstr);
        connect.Open();
        if (txtdname.Text == "")
        { dname = "Default.bak"; }
        else
        { dname = txtdname.Text + ".bak"; }
        SqlCommand command;
        command = new SqlCommand(@"backup database fees_data to disk ='c:\DATABackup\" + dname + "'", connect);
        command.ExecuteNonQuery();
        connect.Close();

バックアップ ボタンをクリックすると、次のエラーが表示されます。

「データベース 'fees_data' は存在しません。名前が正しく入力されていることを確認してください。BACKUP DATABASE が異常終了しています。」

4

2 に答える 2

3

データベース名は、.mdf ファイル名と同じではない可能性があります。

このクエリを実行すると、どのような結果が得られますか?

select name from sys.databases;

そこから正しい名前を使用してください。

于 2012-09-25T17:35:22.413 に答える
1

このコードの代わりに

SqlCommand command;
   command = new SqlCommand(@"backup database fees_data to disk ='c:\DATABackup\" + dname + "'", connect);
   command.ExecuteNonQuery();

以下に書かれたコードを使用してください

string fullPath= "";
 string executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
 fullPath= (System.IO.Path.GetDirectoryName(executable));
 AppDomain.CurrentDomain.SetData("DataDirectory", fullPath);
 fullPath=fullPath+"\\fees_data.mdf";

 SqlCommand command;
 command = new SqlCommand(@"backup ['"+fullPath+"'] to disk ='c:\DATABackup\" + dname + "'", connect);
 command.ExecuteNonQuery();
于 2014-10-21T07:55:50.563 に答える