Целта ми е да се опитам да инсталирам съхранени процедури, които са в .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 скрипт файл с помощта на c#
- 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);
Благодаря!