Это зависит от того, какие они файлы. Если, например, они только содержат действительные команды T-SQL (и не являются пакетными файлами, которые вы запускаете, скажем, в SSMS, которые содержат разделитель пакетов, например GO
), тогда вам просто нужно создать соединение, команду, затем прочитать содержимое файла и использовать его для заполнения свойства CommandText
команды.
Например:
void ExecuteFile(string connectionString, string fileName)
{
using(SqlConnection conn = new SqlConnection(connectionString))
{
string data = System.IO.File.ReadAllText(fileName);
conn.Open();
using(SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = data;
cmd.ExecuteNonQuery();
}
}
}
Если это командный файл, вам нужно разделить файл на отдельные партии и обработать их по отдельности. Самый простой способ - просто использовать string.Split
, но имейте в виду, что он не будет соблюдать правила синтаксического анализа SQL при его разбиении (например, если в операторе SQL появляется GO
, он разделит команду на две части). партии, которые, очевидно, потерпят неудачу).
В целом, вы можете увидеть, что вам нужно сделать, изменив код следующим образом:
string[] batches = SplitBatches(System.IO.File.ReadAllText(fileName));
conn.Open();
using(SqlCommand cmd = conn.CreateCommand())
{
foreach(string batch in batches)
{
cmd.CommandText = batch;
cmd.ExecuteNonQuery();
}
}
Реализация функции с именем SplitBatches
зависит от вас.