Моя цель — установить хранимые процедуры в файлах .sql. После некоторых исследований все рекомендовали, чтобы моя программа считывала файл .sql в строку и создавала командный объект из строки.
using System.Data.SqlClient;
public partial class ExecuteScript
{
static void Main(string[] args)
{
string sqlConnectionString = [connection string];
string script = File.ReadAllText([.sql file path]);
SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
}
}
Вот некоторые ссылки:
- Как выполнить файл сценария .SQL с помощью С# а>
- https://social.msdn.microsoft.com/Forums/en-US/43e8bc3a-1132-453b-b950-09427e970f31/run-a-sql-script-file-in-c?forum=adodotnetdataproviders
Интересно, что sqlcmd.exe принимает файл .sql, а SqlClient в .NET — нет. Кто-нибудь знает, почему и как? Причина, по которой я не хочу читать файл .sql в виде строки, заключается в том, что все мои хранимые процедуры имеют комментарии вверху, и чтение их в строку превращает всю процедуру в комментарий sql. Я понимаю, что могу исправить это разными способами, но я надеялся увидеть, есть ли более простой способ. В итоге я сделал следующее, но, пожалуйста, просветите меня!
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = "-E -d [database] -S [server\\instance] -i " + storedProcFullPath;
startInfo.FileName = "sqlcmd.exe";
Process.Start(startInfo);
Спасибо!