[英]Ignore “missing” database while executing SQL
我正在編寫一個為另一個程序創建SQL Server數據庫的應用程序。 為此,我加載了一個大型SQL腳本,其中包含CREATE DATABASE
, CREATE 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.