我想執行文件夾中的所有sql文件。我在this question找到答案很有幫助。我可以使用他們的命令,並按預期工作。如何在C#代碼中編寫此DOS命令?
我想從C#代碼運行它。我嘗試了一些方法,但我無法得到結果。以下是我嘗試過的代碼,但沒有成功。
Process process = new Process();
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = string.Format("for %f in ({2}/*.sql) do sqlcmd /S {0} /d {1} /U {3} /P {4} /E /i {5}",
sqlServerName, databaseName, folder, sqlUserName, sqlPassword, @"""%f""");
process.StartInfo.WorkingDirectory = @"C:\";
process.Start();
process.WaitForExit();
我想知道我怎麼可以將這個DOS命令for %f in (*.sql) do sqlcmd /S <servername> /d <dbname> /E /i "%f"
成C#代碼
+1爲正確的方式,但你可以張貼更多的解釋爲什麼這種方式更好。 –
:(由於'Select'行'刪除+1',如果腳本包含一個'GO',或者它裏面有'GO',將會刪除您的代碼 –
使用時,我們會刪除一條命令,但正如您所說GO是問題,所以我們應該檢查之前和之後的新行字符(或)使用ReadAllLines並用GO代替行; – Amir