發生錯誤的我的連接字串
<add name="SmartSales_local" connectionString="Server=.\SQLEXPRESS;Integrated Security=true;AttachDbFileName=|DataDirectory|\SmartSales.mdf;"
providerName="System.Data.SqlClient" />
My Database Backup Code in C#
con.ConnectionString = MyConnection();
String receiptdir = @"D:\SmatSalesReports\Backup";
if (!Directory.Exists(receiptdir))
{
Directory.CreateDirectory(receiptdir);
}
string dbname = con.Database.ToString();
string backupdb = "BACKUP DATABASE [" dbname "] TO DISK='" receiptdir "\\" "SmartSales" "-" DateTime.Now.ToString("yyyy-MM-dd--HH-mm-ss") ".bak'";
con.Open();
cm = new SqlCommand(backupdb, con);
cm.CommandTimeout = 120;
cm.ExecuteNonQuery();
con.Close();
嘗試將 sql server 資料庫備份到磁盤時出現此錯誤。在資料庫中“插入/更新/洗掉”一切正常。當我嘗試備份資料庫時,它給了我這個錯誤。 所描述錯誤的螢屏截圖
物件或列名稱缺失或為空。對于 SELECT INTO 陳述句,驗證每個列都有一個名稱。對于其他陳述句,查找空別名。不允許定義為 "" 或 [] 的別名。將別名更改為有效名稱。
編輯后添加的新資訊
我的連接字串,其中一切正常
<add name="SmartSales" connectionString="Data Source=LAPTOP-GPJ5DM2V\SQLEXPRESS;Initial Catalog=SmartSales;Integrated Security=True"
providerName="System.Data.SqlClient" />
當我使用此連接字串時,一切正常。但它在安裝 SSMS 并在 SSMS 中打開資料庫時有效。
uj5u.com熱心網友回復:
添加@squillman 在評論中建議的內容,您將在backup database [] to disk='yourpath.bak';. 連接資料庫屬性在連接打開之前不會自動設定,因此您需要在打開后移動這些行:
con.Open();
string dbname = con.Database.ToString();
string backupdb = "BACKUP DATABASE [" dbname "] TO DISK='" receiptdir "\\" "SmartSales" "-" DateTime.Now.ToString("yyyy-MM-dd--HH-mm-ss") ".bak'";
uj5u.com熱心網友回復:
您在這里遇到了許多問題:
- 您的主要問題:您依賴于
con.Database將資料庫設定為備份的(實際上是空的)值。如果你真的需要從連接字串中決議出來,你可以使用SqlConnectionStringBuilder,或者你可以先打開連接 - 您正在使用
AttachDbFilename,它已被棄用并且通常是一個壞主意 - 該
BACKUP命令是完全能夠被引數化,你應該這樣做 - 您需要使用以下命令處理連接和命令物件
using
String receiptdir = @"D:\SmatSalesReports\Backup";
if (!Directory.Exists(receiptdir))
{
Directory.CreateDirectory(receiptdir);
}
const string backupdb = @"
BACKUP DATABASE @dbname TO DISK = @location;
";
var location = Path.Combine(receiptdir, @"\SmartSales-" DateTime.Now.ToString("yyyy-MM-dd--HH-mm-ss") ".bak");
using(var con = new SqlConnection(MyConnection())
using(var cm = new SqlCommand(backupdb, con) { CommandTimeout = 120})
{
con.Open();
cm.Parameters.Add("@dbname", SqlDbType.NVarChar, 128) = con.Database.ToString();
cm.Parameters.Add("@location", SqlDbType.NVarChar, 255) = location;
cm.ExecuteNonQuery();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/337387.html
標籤:C# sql-server 视觉工作室 实体框架 链接到 sql
