首页 > 解决方案 > 难以从 C# 执行“执行”查询

问题描述

我有在托管供应商应用程序的 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();
                 }
        }
    }

标签: c#sql-serverexecutenonquery

解决方案


什么都没有。

文档ExecuteNonQuery说:

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

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


推荐阅读