Исполнение sql скрипт-файлов из c#

Для того, чтобы вызвать на исполнение sql - файл из c#, необходимо создать подключение (Connection), передать команде(Command) файл и с помощью метода ExecuteNonQuery выполнить файл.
Пример
private void execScript(SQLScript sqlFile)
{
   Connection = new SqlConnection("Data Source=.\SQLEXPRESS;Integrated Security=True");
   Connection.Open();
   SqlCommand cmd = new SqlCommand(sqlFile);
   cmd.Connection = this.Connection;
   cmd.CommandType = System.Data.CommandType.Text;
   cmd.ExecuteNonQuery();
   this.Connection.Close();
}
CommandType – свойство, которое возвращает или задает значение, указывающее, как будет интерпретироваться свойство CommandText.
При выполнении sql-скриптов может возникнуть проблема с командой GO, распознаваемая средой MSSQL Server Management Studio, но не языком c#. Есть случаи,когда в скрипте без команды GO не обойтись,тогда можно разделить скрипт на "GO" следующем образом:
//get the script
string scriptText = GetScript();
//split the script on "GO" commands
string[] splitter = new string[] { "\r\nGO\r\n" };
string[] commandTexts = scriptText.Split(splitter,
StringSplitOptions.RemoveEmptyEntries);
foreach (string commandText in commandTexts)
{
  //execute commandText
}

Но этот код может вызвать ненужные разделения,создавая неправильные sql-команды. Таким образом,желательно избавляться от GO,заменяя его на ";" - это один из способов решения возникшей проблемы.

Last edited Mar 5, 2012 at 4:00 PM by tatka, version 4

Comments

No comments yet.