Трудность выполнения запроса «Выполнить» из C # - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть этот запрос, который выполняется на нашем сервере SQLServer, на котором размещено приложение поставщика.

exec sp_configure 'show advanced options',1
RECONFIGURE 
exec sp_configure 'Ole Automation Procedures', 1
RECONFIGURE

exec sp_configure 'show advanced options', 0
RECONFIGURE 

exec CreateMunisExportFile

exec sp_configure 'show advanced options',1
RECONFIGURE

exec sp_configure 'Ole Automation Procedures', 0
RECONFIGURE

exec sp_configure 'show advanced options', 0
RECONFIGURE

Я хочу выполнить его удаленно, используя C #.

Я использую Visual Studio 2015, но не могу найти доступ к модулям SQLServer, которые позволяют создавать объект Server. Я потерял ссылку этого поста, но также просматривал следующие и другие посты в SO, this-post и that-post .

Я получаю -1 от ExecuteNonQuery в следующей функции и хочу узнать, как получить дополнительную информацию об ошибке.

   private void btRunQuery_Click(object sender, EventArgs e)
    {
        using (var conn = new SqlConnection("Data Source=SERVER\\TICKETTRAK;Initial Catalog=TTRAK9.4.20;User Id=sa;Password=xxxyyyyz;Pooling=false"))
        {
                 string script = File.ReadAllText(@".\SpecialTickeTrakExport_20181106.sql");
                 using (SqlCommand mySqlCmd = new SqlCommand(script))
                 {
                     conn.Open();
                     mySqlCmd.Connection = conn; 
                     var result = mySqlCmd.ExecuteNonQuery();
                     conn.Close();
                 }
        }
    }

1 Ответ

0 голосов
/ 15 ноября 2018

Все в порядке.

Документация для ExecuteNonQuery гласит:

Для операторов UPDATE, INSERT и DELETE возвращаемым значением является числострок, затронутых командой.Если для вставляемой или обновляемой таблицы существует триггер, возвращаемое значение включает количество строк, на которые влияет операция вставки или обновления, а также количество строк, на которые влияет триггер или триггеры. Для всех других типов операторов возвращаемое значение равно -1. Если происходит откат, возвращаемое значение также равно -1.

Поскольку выполняемая вами команда не являетсяUPDATE, INSERT или DELETE, тогда возвращаемое значение всегда будет -1.

...