2011-06-06 58 views
3

你好,我有以下问题,我无法解决它。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。

感谢您的任何帮助。

+3

尝试在SQL Server Management Studio Express中一起运行这三个语句 - 它也不起作用!您需要将它们分为两个或三个不同的调用 - 它们不能在单个调用中调用.... – 2011-06-06 12:58:00

+3

从[CREATE DEFAULT](http://msdn.microsoft.com/zh-cn/library/ms173565。 aspx):“此功能将在未来版本的Microsoft SQL Server中删除,避免在新开发工作中使用此功能” – 2011-06-06 13:14:49

回答

-2

尝试增加每个语句之间的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';" 
+2

这不适用于'DbCommand'或'SqlCommand' - GO是** NOT **一个有效的SQL关键字 - 它是一个SQL Server Management Studio分隔符只有 – 2011-06-06 13:00:03

+0

啊,讨厌我!我以前从未在SSMS之外尝试过 - 对不起。 – Jaymz 2011-06-07 11:22:44

1

我不能完全确定你想做什么 - 但你的做法似乎过于复杂...

你似乎在您的XLibPKID列中添加DEFAULT子句 - 对吗?这ALTER TABLE声明应该这样做,太:

command.CommandText = 
    "ALTER TABLE [dbo].[DOMAIN_XLibPKID_D] " + 
    " ADD CONSTRAINT DF_XLibPKID DEFAULT (0) FOR XLibPKID"; 
command.ExecuteNonQuery() 

这只是增加了一个单独的DEFAULT CONSTRAINT您的餐桌。

相关问题