开发者

Connection string and sql backup

I'm having problem with the following C# code to perform a backup, particularly in the connection string.

The code is as follows:

private void BK()
{
    string strconn = @"Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\db.mdf;Integrated Security=True;User Instance=True"; 
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = strconn;

    try {
       //Query per backup
       string queryBK = "BACKUP DATABASE db TO DISK ='C:\\Program Files\\Microsoft SQLServer\\MSSQL10.SQLEXPRESS\\MSSQL\\Backup\\db.bak' WITH INIT, SKIP, CHECKSUM";

       SqlComma开发者_如何学编程nd cmdBK = new SqlCommand(queryBK, conn);
       conn.Open();            
       cmdBK.ExecuteNonQuery();
       MessageBox.Show("backup effettuato");
    }
    catch (Exception ex) {
       MessageBox.Show(ex.Message, "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    finally {
       conn.Close();
    }
 }

This code works on the development PC, but if I install my application on another PC it throws this error:

The database does not exist. Verify that the name has been entered correctly. INTERRUPTION ANOMALOUS BACKUP DATABASE.

I would stress that this string works well with the operations INSERT, DELETE, UPDATE on both my PC and on the PC test.

If I replace the connection string with:

string strconn = @"Data Source=.\SQLEXPRESS; Database = db;Trusted_Connection =True";

The string works on my dev machine but not on the test machine. It throws the following error:

Can not open database requested by the login. Login failed. Login failed for user Pina-PC \ Pina


Dear fellow you can use your code in this way.

private void BK()
{
string strconn = @"Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\db.mdf;Integrated Security=True;User Instance=True"; 
SqlConnection conn = new SqlConnection();
conn.ConnectionString = strconn;

try {
// First get the db name

     conn.Open();

        string dbname;

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        dbname = cmd.Connection.Database.ToString();       


    //Query per backup
   string queryBK = "BACKUP DATABASE " + dbname + " TO DISK ='C:\\Program Files\\Microsoft SQLServer\\MSSQL10.SQLEXPRESS\\MSSQL\\Backup\\db.bak' WITH INIT, SKIP, CHECKSUM";

   SqlCommand cmdBK = new SqlCommand(queryBK, conn);
   conn.Open();            
   cmdBK.ExecuteNonQuery();
   MessageBox.Show("backup effettuato");
}
catch (Exception ex) {
   MessageBox.Show(ex.Message, "ERRORE", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally {
   conn.Close();
}
}

this routine will work in your case.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜