2013-08-06 18 views
0

На работе нам иногда нужно выполнить SQL-скрипт (мы открываем этот .SQL-файл , который хранится как C: \ SQLScript \ man.sql-, задает правильные параметры, а затем выполнить его). Сейчас я создаю приложение C#, это приложение работает на моем компьютере и выполняет некоторые операции с сервером БД (тот же сервер, на котором работает скрипт .sql), одна из этих операций включает выполнение этого скрипта.Выполнять запросы, которые не хранятся в DB

Проблема заключается в следующем: как я могу выполнить (из моего приложения C#) SQL-скрипт, если он хранится как простой файл, а не реальная хранимая процедура?

+2

То, что вы описываете, это текстовый файл - не хранимая процедура на жестком диске. Вам просто нужно прочитать текст из файла в ваше приложение и выполнить его, как и любой встроенный SQL - в большинстве случаев с помощью 'SqlCommand' и' SqlConnection' - или дисперсии в зависимости от поставщика базы данных. –

+0

Может ли опубликовать образец содержимого файла? Он содержит часть 'CREATE PROCEDURE', или это просто инструкции SQL? – asafrob

+0

Является ли это производственной БД? звучит довольно неприятно, какие разрешения имеет пользователь приложения в БД? – christiandev

ответ

0

Я считаю, что вы можете открыть файл, прочитать его, а затем выполнить команду SQL, созданную из строки файла, а затем выполнить команду.

Я не уверен, есть ли лучший способ, но я бы это сделал.

0

Обычно я пытаюсь преобразовать это в хранимую процедуру, передавая параметры, которые необходимы. Но вы можете посмотреть на принятый подход here. Он в основном считывает текст из скрипта в строку и затем выполняет его с помощью ExecuteNonQuery. Вы можете изменить текст перед вызовом ExecuteNonQuery.

1

Если это правильный файл SQL и выполняется, как это тогда все, что вам нужно сделать, это

string query = File.ReadAllText("yoursqlfilePath"); 
    using (SqlConnection connection = new SqlConnection(
      connectionString)) 
{ 
    SqlCommand command = new SqlCommand(query , connection); 
    command.Connection.Open(); 
    command.ExecuteNonQuery(); 
} 
+0

@JoeEnos, который вы отредактировали слишком быстро, я собирался это сделать. в любом случае спасибо – Ehsan

Смежные вопросы