2011-08-02 8 views
0

別のプログラムのSQL Serverデータベースを作成するアプリケーションを作成しています。このために、CREATE DATABASE,CREATE TABLEなどを含む大きなSQLスクリプトをロードします。SQLを実行している間に "missing"データベースを無視する

スクリプトの最初の行です:

/*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

GOが入っているスクリプトを読み込んで実行することはできません。

GOは、SQL Serverクライアントツールとしてのみ認識され、バッチセパレータとして認識されます。データベースエンジンはそれを認識しません。この

を行う方法の詳細については、これらの質問を参照してください。また、SqlConnectionオブジェクトはMultiRisk5に接続しようとするのでしょうか?もしそうなら、このエラーはあまりにも前にUSE masterが実行されます

+0

うわー。 2 downvotes now。 1つはupvoteを削除しました。ここで興味深い投票パターンがあります – gbn

+0

私は+1を追加しましたが、-2は有効なスコア以外の動機のために行動する人のようです。 – Andrew

+0

これは間違いなく遭遇しているエラーの1つなので、私は+1しました。 –

0

戻ってくるものを確認するには、try catchブロックでクエリを実行してみてください。それは問題を理解するための最初の一歩です。

0

あなたのアプリにはデータベースを作成するための適切な権限がないと思われますか? 続行する前に、データベースの作成が成功したかどうかを確認する必要があります。

関連する問題