У меня есть консольное приложение, которое использует утилиту sqlcmd.exe.Можно очистить пул соединений с помощью утилиты sqlcmd в консольном приложении C# при запуске нескольких SQL-запросов?
У меня есть большой файл 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");
}
}
Проблема заключается в том, что некоторая хранимых процедур является e xecuted. Поскольку эти хранимые процедуры относятся к некоторым столбцам, которые были изменены ранее, выполнив первый код (большой файл sql).
Если я запускаю только последний код без первого запуска, то все работы и все хранимые процедуры отображаются в студии управления SQL.
Вышеуказанный код выполняется асинхронно?
Вы можете мне помочь? Есть ли возможность выпускать пулы с помощью утилиты sqlcmd.exe?
Я не использовал SqlConnection или что-нибудь связанный с подключением к базе данных ссылок. Только утилита sqlcmd.exe. –
Есть ли какая-то особая причина, почему вам нужно использовать утилиту sqlcmd.exe или вы не можете просто проанализировать файл обновления и запустить с помощью sqlconnection? – Johnv2020