连接字符串和sql备份

时间:2011-10-05 17:29:11

标签: c# sql-server-2008 connection-string

我遇到以下C#代码的问题,无法执行备份,特别是在连接字符串中。

代码如下:

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";

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

此代码适用于开发PC,但如果我在另一台PC上安装我的应用程序,则会抛出此错误:

  

数据库不存在。验证是否已输入名称   正确。中断异常备份数据库。

我要强调的是,这个字符串适用于INSERT,DELETE,UPDATE操作 在我的电脑和PC测试中。

如果我用:

替换连接字符串
string strconn = @"Data Source=.\SQLEXPRESS; Database = db;Trusted_Connection =True";

字符串在我的开发机器上运行,但在测试机器上运行。它会引发以下错误:

  

无法打开登录请求的数据库。登录失败。登录   用户Pina-PC \ Pina失败

1 个答案:

答案 0 :(得分:1)

亲爱的朋友,您可以这样使用您的代码。

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

此例程适用于您的情况。