我有一个使用 sqlcmd.exe 实用程序的控制台应用程序。
我有一个修改表结构的大 SQL 文件和一些创建存储过程的 sql。
首先我想应用表修改,然后是程序。
我写了类似的东西(用于执行大 sql 文件)
FileInfo file = new FileInfo( pathToBigSqlFile );
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = "sqlcmd.exe";
process.StartInfo.Arguments = string.Format( "-S {0} -d {1} -U {2} -P {3} -i \"{4}\"",
server, dbname, user, password, file.FullName );
process.Start();
好的,下一步是执行创建存储过程的其他 sql 文件
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
foreach ( FileInfo file in fi ) {
filename = Path.GetFileName( file.FullName );
Console.WriteLine( i + "/" + sum + " Executing file: " + filename );
i++;
process.StartInfo.FileName = "sqlcmd.exe";
process.StartInfo.Arguments = string.Format( "-S {0} -d {1} -U {2} -P {3} -i \"{4}\"",
server, dbname, username, password, file.FullName );
process.Start();
Console.WriteLine( "The file(s) has(have) been executed" );
}
}
问题是执行了一些存储过程。因为这些存储过程引用了之前通过执行第一个代码(大 sql 文件)修改的某些列。
如果我只运行最后一个代码而不首先运行,那么所有存储过程都会出现在 SQL 管理工作室中。
上面两个代码是异步运行的?
你能帮帮我吗?是否有机会使用 sqlcmd.exe 实用程序释放池?