ん、NEW_DATABASEをのC#から組み込みSQLファイルを実行すると、エラーを取得しますが、SSMSから実行すると、私はこのようになりますシンプルな.sqlファイルはありませ
USE [master]
GO
CREATE DATABASE [NEW_DATABASE]
GO
私はSSMSからそれを実行すると、それが正常に動作しますデータベースが作成されます。しかし、私はC#プログラムの埋め込みリソースとしてこのコマンドを使用してこのコマンドを実行しようとしています。この.sqlファイルの最終版はもっと複雑になりますが、今はこの単純なスクリプトを動作させようとしています。ここで
私が撮影した手順は次のとおりです。
1) I added a resource file (named SqlFiles) to my project.
2) I opened the resource file within VS and added a new file
resource, "create.sql".
3) I saved the resource file.
をその後は、私のコードでは、私は次のようしている:私はプログラムを実行すると
// If database doesn't exist, run the script to create it.
if (dbExists == false)
{
using (var connection = new SqlConnection("Data Source=" + computerName + "\\SQLEXPRESS;Initial Catalog=master;Integrated Security=True"))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText = SqlFiles.create;
command.ExecuteNonQuery();
}
}
、私は次のエラーを取得しますコマンドが実行されたとき:
しかし、私が述べたように、私はこの同じファイルをSSMSで開いて実行するとwor問題なし。
私は(むしろ、文字を返す)私はデバッグにcommand
変数にカーソルを合わせると、CommandTextをの値はそれでテキストの書式を設定したように見えることがわかります:
USE [master]\r\nGO\r\nCREATE DATABASE [NEW_DATABASE]\r\nGO\r\n
が、これはこの問題のだろうか?
SSMS経由で実行する場合、Windows認証または特定のSQLユーザーアカウントを使用していますか? – Lex
@Lex Windows認証。 – Kevin
私はそこに改行文字が正しいと思います。 'command.CommandText = SqlFiles.create.Replace(" \\ r \\ n "、" ");'のようなものを使ってそれらを取り除くとうまくいくのですか?たぶん、単一の '\\'でも試してみてください。明白なことを示唆している場合は、私のお詫び申し上げます。 – Lex