【问题标题】:Setting ANSI_NULLS in command text gives error在命令文本中设置 ANSI_NULLS 会出错
【发布时间】:2011-12-15 21:14:05
【问题描述】:

在运行一些查询之前,我必须设置 ANSI_NULLS 和其他几个数据库选项。所以在我的代码中

const string query_prefix = "SET ANSI_NULLS ON \n GO \n SET ANSI_PADDING ON \n GO \n SET ANSI_WARNINGS ON \n GO \n SET CONCAT_NULL_YIELDS_NULL ON \n GO \n SET QUOTED_IDENTIFIER ON \n GO \n SET NUMERIC_ROUNDABORT OFF \n GO \n ";

我用作

SqlCommand cmd = new SqlCommand(query_prefix + "SELECT UserID,FirstName,MiddleName,LastName FROM mydb.dbo.UserInfo where UserID=10277",con);

我在上面添加了“\n”,因为 SET ANSI_NULLS ON GO SET ANSI_PADDING ON GO 给出了错误“GO 附近的语法不正确”。在管理工作室中,如果 GO 在换行符中,那么我不会收到不正确的语法错误,否则我会收到。所以我添加了“\n”,但它仍然抛出错误。

那么如何从代码中设置这些数据库选项呢?我不能使用程序。

【问题讨论】:

    标签: c# sql sql-server sql-server-2005 ado.net


    【解决方案1】:

    GO 是 SSMS 中的批处理分隔符,它不是 SQL 命令,不能包含在这样的查询中。

    【讨论】:

      【解决方案2】:
      • 打开连接
      • 创建一个 SqlCommand 对象以使用 ExecuteNonQuery 方法执行 SET ANSI_NULLS ON 和 SET_ANSI_PADDING_ON
      • 在同一连接中将您的 select 语句作为单独的 SqlCommand 执行

      可以在SO post 中找到示例代码。如果适合您的环境,您还可以在数据库级别为这些设置设置默认值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-14
        • 1970-01-01
        • 1970-01-01
        • 2015-07-29
        相关资源
        最近更新 更多