通過System.Data.SqlClient命名空間只能執行單條SQL,或多個內容中間用;分開,不能執行類似等命令,有沒有一種方法能類似查詢分析器一樣執行一些批命令呢,答案是通過OSQL來執行。
OSQL詳細用法:http://technet.microsoft.com/zh-cn/library/ms162806.aspx
通地進程來調用: /**//// <summary>
/// 執行OSQL命令
/// </summary>
public static void ExcuteOsqlCmd(string cmd, string errorFile, string filePath)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "osql";
p.StartInfo.Arguments = cmd;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow=true;
p.Start();
p.WaitForExit();
//p.Close();
int exitCode = p.ExitCode;
if (exitCode != 0)
{
StreamReader sr = new StreamReader(errorFile, System.Text.Encoding.Default);
string all = sr.ReadToEnd();
sr.Close();
//ExcuteOtherCmd(string.Format("notepad \"{0}\"", errorFile));
throw new StepException(all);
}
}
調用如下:
string comm = string.Format(" -U {5} -P {0} -S {1} -d {2} -b -e -i \"{3}\" -o \"{4}\"", pass,
conn.DataSource,
conn.Database,
FilePath, errorFile,user);
Process.ExcuteOsqlCmd(comm, errorFile, FilePath);//直接執行一個SQL檔案,路徑為FilePath