[英]Executing SQL scripts with GO statements without SMO
我遇到的一件事是將應用程序部署到未安裝SMO的計算機上。 我想執行具有GO
語句的腳本,但也希望避免在目標計算機上安裝SMO軟件包或解析SQL腳本文件的需要(因為我不知道sql腳本是否將包含函數或SP)。
我嘗試將SMO relevenat dll手動復制到可執行文件的bin文件夾中,但始終需要運行該應用程序的其他一些dll。
有什么幫助嗎?
除了SMO, sqlcmd實用程序還可以理解GO語句。 您將需要使用System.Diagnostics.Process
以便以腳本作為參數對其進行調出。
我絕不是說這是這樣做的方法,但這是有效的選擇。 如果該實用程序在目標計算機上不存在,您仍然會遇到與以前相同的問題。
您也許還可以通過安裝程序包部署SMO,而無需在目標計算機上“安裝”它:
我發現以下解決方案已經過測試
using (SqlConnection cn = new SqlConnection(connectionString))
{
try
{
cn.Open();
FileInfo file = new FileInfo(fileName);
string script = file.OpenText().ReadToEnd();
string[] splitChar = { "\r\nGO\r\n" };
var sqlLines = script.Split(splitChar, StringSplitOptions.RemoveEmptyEntries);
int res = 0;
SqlCommand cmd = null;
foreach (var query in sqlLines)
{
cmd = new SqlCommand(query, cn)
{
CommandTimeout = 5400
};
res = cmd.ExecuteNonQuery();
}
cn.Close();
}
catch (Exception ex)
{
msg = ex.Message;
}
finally
{
cn.Close();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.