从C#难以执行“执行”查询

时间:2018-11-15 20:27:52

标签: c# sql-server executenonquery

我有此查询,该查询在承载供应商应用程序的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,但是找不到对允许您创建Server对象的SQLServer模块的访问。我丢失了该文章的链接,但也一直在查看SO和this-postthat-post中的以下文章和其他文章。

我在下面的函数中从ExecuteNonQuery得到-1,并且想知道如何获取更多错误信息。

   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 :(得分:2)

没事。

documentation for ExecuteNonQuery说:

  

对于UPDATE,INSERT和DELETE语句,返回值是该命令影响的行数。当要插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。 对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值为-1。

由于您正在执行的命令不是UPDATEINSERTDELETE,因此返回值将始终为-1