我想执行文件夹中的所有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