1

これがデータベースをバックアップするための私のコードです。
これらは私のデータベースです:
ここに画像の説明を入力してください

私はこれをエラーとして受け取りました:

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

そして私のウェブページのコード:

public partial class Default2 : System.Web.UI.Page
{
    string dbname = "BakupDB";
    SqlConnection sqlcon = new SqlConnection();
    SqlCommand sqlcmd = new SqlCommand();
    SqlDataAdapter da = new SqlDataAdapter();
    DataTable dt = new DataTable();

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click1(object sender, EventArgs e)
    {
        //Mentioned Connection string make sure that user id and password sufficient previlages
        sqlcon.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BakupDB.mdf;Integrated Security=True;User Instance=True";

        //Enter destination directory where backup file stored
        string destdir = "D:\\backupdb";

        try
        {
            sqlcon.Open();
            sqlcmd = new SqlCommand("backup database "+dbname+" to disk='" + destdir + "\\" + DateTime.Now.ToString("ddMMyyyy_HHmmss") + ".Bak'", sqlcon);
            sqlcmd.ExecuteNonQuery();

            sqlcon.Close();
            Response.Write("Backup database successfully");
        }
        catch (Exception ex)
        {
            Response.Write("Error During backup database!");
        }
    }
}

何が間違っていますか?

4

2 に答える 2

1

ユーザーインスタンスを使用しようとしているようです。余談ですが(あなたの質問に100%関連しているわけではありません)、この機能はSQL Server Express 2012で非推奨になっていると思います(SQL Server 2008以降は非推奨になっています)。

さておきごめんなさい。あなたの質問に関して、おそらく以下があなたを助けるでしょう:

Stack Overflowの質問は、SQLコマンドを実行して達成しようとしているユースケースに近いと思いますが、興味がある場合や別のアプローチを試したい場合に備えて、SMOの方法を参照しています。SOの質問に基づくと、接続文字列は次のようになります。

sqlcon.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BakupDB.mdf;Integrated Security=True;User Instance=True";

セクションが欠落しているDatabase=ため、おそらく次のようになります。

sqlcon.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BakupDB.mdf;Integrated Security=True;User Instance=True;Database=BakupDB";
于 2013-03-21T16:43:51.953 に答える
0

このコードは私のために働いた:

private void button5_Click(object sender, EventArgs e)
{
    try
    {
        string dlink= @"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\jsdb.mdf; Database=jsdb; User Instance=True; Integrated Security=True;Asynchronous Processing= True";
        SqlConnection dcc = new SqlConnection(dlink);
        dcc.Open();
            string database = "jsdb"; 
            string blc = textBox1.Text;  //(Its the location to save the file)
            string nm = "dbBackup";
            string dt =DateTime.Today.ToShortDateString();
            string sl = "BACKUP DATABASE "+database+" TO DISK = '"+blc+"\\"+nm+"-"+dt+".bak'" ;
            SqlCommand cql = new SqlCommand(sl,dcc);
            cql.ExecuteNonQuery();
            MessageBox.Show("Database backup completed successfully..");
            dcc.Close();
    } 
   catch (Exception ex)
    { MessageBox.Show(ex.Message); }
}
于 2020-01-15T16:00:23.833 に答える