DbCommand无法在一个ExecuteNonQuery()中运行多个SQL命令

时间:2011-06-06 12:20:12

标签: sql-server vb.net dbcommand

您好我有以下问题,我无法解决。

使用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()

但我总是得到一条错误消息

  

关键字'CREATE'附近的语法不正确。

但是当我从strCommand独立运行每个命令时,一切正常。

我正在使用VS 2010 Professional和SQL Server 2008 R2 Express。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

您似乎在DEFAULT列中添加了XLibPKID条款 - 对吧?这个ALTER TABLE语句也应该这样做:

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

这只会在您的表格中添加一个单独的DEFAULT CONSTRAINT

答案 1 :(得分:-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';"