讓C#程序直接執行sql腳本文件,類似SSMS直接打開sql文件並執行一樣,需要借用mssql的幾個類庫及命名空間:
vs2010在引用里無法找到這兩個類庫,那我們就想辦法找到它,首先我電腦安裝了mssqlserver2008 ,
我去X:\Program Files\Microsoft SQL Server\100\SDK\Assemblies 找到
Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll(這個一定要考到你的程序目錄,但你可以不引用)
然后手動添加應用,第三個dll一定要引用,不然會報錯
方法代碼如下(傳入的sql內容可以從SQL腳本文件直接通過文件流的方式直接讀出來,語句有GO也兼容):
public static bool ExceSQL(string sql, string constr,ref string logtxt) { bool isBuild = false; logtxt = "ExceSQL Finished,sql count:0."; try { // string connectonstring = "data source=10.1.8.188;initial catalog=WAPPDB;user id=sa;password=mindray99!"; SqlConnection conn = new SqlConnection(constr); Microsoft.SqlServer.Management.Smo.Server server = new Server(new ServerConnection(conn)); int i = server.ConnectionContext.ExecuteNonQuery(sql); if (i > 0) { isBuild = true; logtxt = "ExceSQL Success,sql count:" + (0 - i).ToString()+"."; } } catch (Exception ex) { logtxt = "ExceSQL Failed - " + ex.Message; Logs.Error("ExceSQL Failed - " + ex.Message); } return isBuild; }