簡體   English   中英

執行SQL時忽略“丟失”的數據庫

[英]Ignore “missing” database while executing SQL

我正在編寫一個為另一個程序創建SQL Server數據庫的應用程序。 為此,我加載了一個大型SQL腳本,其中包含CREATE DATABASECREATE TABLE等。

該腳本的第一行是:

/*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中執行時,腳本運行良好。

您無法在其中包含GO的c#中加載腳本並運行它。

GO僅被視為SQL Server客戶端工具,並且被視為批處理分隔符。 數據庫引擎無法識別它。 有關如何執行此操作的更多信息,請參見這些問題

另外,SqlConnection是否嘗試連接到MultiRisk5? 如果是這樣,這在運行USE master之前也會出錯

您可能希望嘗試在try catch塊中執行查詢,以查看返回的結果。 這將是解決問題的良好的第一步。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM