AmyNeedsHelp Ответов: 1

Выполнение файла .sql в c# без использования smo


Привет Я хочу знать, есть ли в c#.net существует любой способ выполнить файл .sql, состоящий из нескольких инструкций insert и update, разделенных ключевым словом GO, без необходимости добавлять microsoft.sqlserver.management.smo. Нужен этот альтернативный подход, потому что я получаю некоторые проблемы с версией при использовании microsoft.sqlserver.management.smo dll в SQL2k8 R2. Я пытаюсь создать приложение, которое должно работать на любой версии выше или равной SQL 2005 db
Спасибо

1 Ответов

Рейтинг:
9

StianSandberg

Вы можете просто использовать SqlCommand для выполнения вашего sql-запроса:

var con = new SqlConnection("connstring");
var cmd = new SqlCommand("query", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();


Если у вас есть запрос с одним или несколькими операторами GO вам придется разбить скрипт на отдельные запросы и выполнять их один за другим

var fileContent = File.ReadAllText("query.sql");
var sqlqueries = fileContent.Split(new[] {" GO "}, StringSplitOptions.RemoveEmptyEntries);

var con = new SqlConnection("connstring");
var cmd = new SqlCommand("query", con);
con.Open();
foreach (var query in sqlqueries)
{
    cmd.CommandText = query;
    cmd.ExecuteNonQuery();
}
con.Close();


Вероятно, это хорошая идея, чтобы сделать это в сделке. В зависимости от того, какой тип sql вы выполняете.


AmyNeedsHelp

Можем ли мы использовать эту команду SqlCommand для выполнения нескольких запросов sql? Я считаю, что мы можем выполнить только один оператор запроса, используя этот метод. Мне нужно выполнить несколько операторов sql-запроса, разделенных ключевым словом 'GO' из файла

StianSandberg

updatead мое решение :)

AmyNeedsHelp

Эй, спасибо, это сработало!

Member 13070927

Спасибо, это мне помогло.