2011-06-06 86 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您的餐桌。

相關問題