2011-08-02 35 views
0

我正在編寫一個應用程序,爲另一個程序創建SQL Server數據庫。爲此我加載一個包含CREATE DATABASECREATE TABLE等的大型SQL腳本。在執行SQL時忽略「丟失」數據庫

腳本的第一行是:

/*CREATE DATABASE*/ 
USE [master] 
GO 
CREATE DATABASE [MultiRisk5] COLLATE Latin1_General_CI_AS 
GO 
USE [MultiRisk5] 
GO 

和C#代碼:

var sqlConn = new SqlConnection("myConnection"); 
var cmd = new SqlCommand("mySqlScript", sqlConn); 
sqlConn.Open(); 
cmd.ExecuteNonQuery(); 
sqlConn.Close(); 

當我運行程序我上USE聲明,告訴我該數據庫異常MultiRisk5不存在。

這怎麼可能,當我剛創建數據庫?該腳本在SQL Server Management Studio中執行時運行良好。

+5

'GO'不是SQL Server命令。它是Management Studio的批處理分隔符。 –

+0

請確認錯誤... – gbn

回答

1

你不能在c#中加載腳本並運行它。

GO僅被識別爲SQL Server客戶端工具,並作爲批分隔符。數據庫引擎不會識別它。看到這些問題,以獲得更多關於如何做到這一點

此外,沒有關閉SqlConnection嘗試連接到MultiRisk5?如果是這樣,在運行USE master之前,這也會出錯

+0

哇。 2現在下降。一個刪除upvote。這裏有一些有趣的投票模式 – gbn

+0

我已經添加了+1,但是-2看起來更像是有人爲有效評分以外的動機行事。 – Andrew

+0

這是他們遇到的錯誤中的一個毋庸置疑的,所以我已經+1了。 –

0

您可能想嘗試在try catch塊中執行查詢以查看返回的內容。這將是解決問題的好的第一步。

0

也許你的應用程序沒有適當的權限來創建數據庫? 在繼續之前,您應該檢查數據庫創建是否成功。