在命令文本中设置ANSI_NULLS会产生错误

时间:2011-12-15 21:14:06

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

在运行某些查询之前,我必须设置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”但它仍然会引发错误。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

示例代码可在此SO post中找到。您也可以根据您的环境在数据库级别设置这些设置的默认值。