DbCommand无法在一个ExecuteNonQuery中运行多个SQL命令()
你好,我有以下问题,我无法解决它。DbCommand无法在一个ExecuteNonQuery中运行多个SQL命令()
随着DbCommand
我想执行这个SQL语句
Dim strCommnad As String =
"CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +
"CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine +
"EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';"
command.CommandText = strCommnad
command.CommandType = CommandType.Text
command.ExecuteNonQuery()
,但我总是得到这样的错误消息关键字“创建”附近
不正确的语法。
但是,当我从strCommand
独立运行每个命令然后一切工作正常。
我正在使用VS 2010 Professional和SQL Server 2008 R2 Express。
感谢您的任何帮助。
尝试增加每个语句之间的GO
:
Dim strCommnad As String = "CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +
"GO; CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine +
"GO; EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';"
这不适用于'DbCommand'或'SqlCommand' - GO是** NOT **一个有效的SQL关键字 - 它是一个SQL Server Management Studio分隔符只有 – 2011-06-06 13:00:03
啊,讨厌我!我以前从未在SSMS之外尝试过 - 对不起。 – Jaymz 2011-06-07 11:22:44
我不能完全确定你想做什么 - 但你的做法似乎过于复杂...
你似乎在您的XLibPKID
列中添加DEFAULT
子句 - 对吗?这ALTER TABLE
声明应该这样做,太:
command.CommandText =
"ALTER TABLE [dbo].[DOMAIN_XLibPKID_D] " +
" ADD CONSTRAINT DF_XLibPKID DEFAULT (0) FOR XLibPKID";
command.ExecuteNonQuery()
这只是增加了一个单独的DEFAULT CONSTRAINT
您的餐桌。
尝试在SQL Server Management Studio Express中一起运行这三个语句 - 它也不起作用!您需要将它们分为两个或三个不同的调用 - 它们不能在单个调用中调用.... – 2011-06-06 12:58:00
从[CREATE DEFAULT](http://msdn.microsoft.com/zh-cn/library/ms173565。 aspx):“此功能将在未来版本的Microsoft SQL Server中删除,避免在新开发工作中使用此功能” – 2011-06-06 13:14:49