[過去ログ] ふらっと C#,C♯,C#(初心者用) Part141 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
393(5): デフォルトの名無しさん [] 2020/03/08(日) 17:03:53 ID:NoMbfY/N(1) AAS
質問です。
Adaptive Code 第2版を読んでいるのですが、
SQLを用いたサンプルプログラムの実行がうまくいかず、困っています。
サンプルは以下のものを使用しています。
外部リンク:github.com
SQL Serverとの接続をする部分で例外を出します。
具体的には、以下のソースファイルの26行目です。
外部リンク[cs]:github.com
エラーメッセージは、以下のとおりです。
System.Data.SqlClient.SqlException: 'SQL Server への接続を確立しているときに
ネットワーク関連またはインスタンス固有のエラーが発生しました。
サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、
および SQL Server がリモート接続を許可するように構成されていることを確認してください。
(provider: Named Pipes Provider, error: 40 - SQL Server への接続を開けませんでした)'
動作環境はWindows 10、Visual Studio Community 2019です。
SQL Server Express 2016 LocalDB はVSと同時にインストールしてあります。
解決策をご教示いただきたく、よろしくお願いします。
394(2): デフォルトの名無しさん [sage] 2020/03/08(日) 17:44:31 ID:K4cIg85y(1/2) AAS
>>393
using(var connection = new SqlConnection(settings.GetSetting("TaskDatabaseConnectionString"))){
この次の行で止めてconnection.ConnectionStringの値を確認してみ
LocalDBしかインストールしてないなら接続文字列は "(LocalDB)\{LocalDBインスタンス名}" みたいな形式でないと接続できないよ
このあたりを参考にしてね
外部リンク:blog.clock-up.jp
395(1): 393 [] 2020/03/08(日) 18:15:24 ID:vsuFdxy2(1/3) AAS
>>394
早速ありがとうございます。
connection.ConnectionStringの値は、以下のようになっていました。
ConnectionString = "Data Source=(local);Initial Catalog=TaskDatabase;Integrated Security=True;Application Name=Task List Editor"
ソースコードを読み解いてみると、接続文字列は以下のApp.configから読み取るようになっていました。
外部リンク:github.com
そこでApp.config内の接続文字列を"Data Source=(LocalDB)\MSSQLLocalDB;.....(以下省略)"と変更したところ、
エラーメッセージが変化しました。以下のとおりです。
System.Data.SqlClient.SqlException: 'Cannot open database "TaskDatabase" requested by the login. The login failed.
Login failed for user '{自分のPCのホスト名}\{ユーザー名}'.'
どうやらこれだけでは解決しないようなので、
教えていただいたブログの情報を参考に設定を変更してみます。
それでもうまく行かなければまたご質問いたします。
397: デフォルトの名無しさん [sage] 2020/03/08(日) 18:32:39 ID:AVAsnwFk(1) AAS
>>393
出版社に送ってやれよ
くだらんコードのせいでプロジェクトが暗礁に乗り上げた
エラーの理由もわけがわからない
これがadaptive codeってことでよろしいですか?
って
398: 393 [] 2020/03/08(日) 19:12:05 ID:vsuFdxy2(2/3) AAS
>>394
教えていただいた解説ブログを参考に設定を確認しました。
・LocalDB の存在確認
コントロールパネルの「プログラムと機能」にMicrosoft SQL Server Express 2016 LocalDB が存在しており、インストールはできているようです。
・有効な LocalDB のインスタンス名を確認
解説と同様に、sqllocaldb infoをコマンドプロンプトで実行すると、以下が表示されました。
MSSQLLocalDB
ProjectsV13
・SQL Server Data Tools for Visual Studio の存在確認
コントロールパネルの「プログラムと機能」には存在しませんでした。しかしVisual Studioの「ツール」→「ツールと機能を取得」を
確認すると「SQL Server Data Tools」にはチェックマークが入っており、インストールはできているように見えます。
・Visual Studio に LocalDB インスタンス名を設定しておく
"(LocalDB)\MSSQLLocalDB" が既に設定されていました。
・Visual Studio 内 Server Explorer から LocalDB 接続を行う
解説の通りmdfファイルを作成しました。接続文字列を確認し、サンプルプログラムのApp.config内の接続文字列を、以下の通り変更してみました。
"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={先ほど作成したmdfファイルのパス};
Initial Catalog=TaskDatabase;Integrated Security=True;Application Name=Task List Editor"
すると、発生する例外が変わり、以下の通りになりました。
System.Data.SqlClient.SqlException: 'Cannot attach file '{先ほど作成したmdfファイルのパス}'
as database 'TaskDatabase' because this file is already in use for database '{先ほど作成したmdfファイルのパス}''
>>396396(1): デフォルトの名無しさん [sage] 2020/03/08(日) 18:28:28 ID:K4cIg85y(2/2) AAS
>>395
> System.Data.SqlClient.SqlException: 'Cannot open database "TaskDatabase" requested by the login. The login failed.
Visual Studio入れてるなら 表示 - SQL Server オブジェクト エクスプローラー をクリックして
SQL Server の下の データベース を展開して接続したいデータベースがあるかを確認して
(そもそもデータベース作ってあるの?)
「SQL Server オブジェクト エクスプローラー」
を開いたところ、「SQL Server」→「(localdb)\MSSQLLocalDB」→「データベース」
のところに解説ブログに従って作成したmdfファイルのパスが表示されています。(これで「作ってある」と言えるのかがよく分かりませんが…)
399(1): 393 [] 2020/03/08(日) 19:36:27 ID:vsuFdxy2(3/3) AAS
すみません、どうやら解決しました。
サンプルプログラムのTaskDatabaseプロジェクトの「プロパティ」→「デバッグ」を見たところ、
「ターゲット接続文字列」が以下のように記載されていました。
Data Source=(localdb)\ProjectsV13;Initial Catalog=TaskDatabase;Integrated Security=True;Pooling=False;Connect Timeout=30
また、「SQL Server オブジェクト エクスプローラー」をよくよく見てみると、
「SQL Server」の下には「(localdb)\MSSQLLocalDB」のほかに「(localdb)\ProjectsV13」があり、
その下に今回のサンプルプログラムで使用する「TaskDatabase」が作成されていました(いつの間にできた??)。
そこで接続文字列のデータソースを「(localdb)\ProjectsV13」に変更したところ、サンプルプログラムがうまく動作しました。
SQL周りの知識が全く無いので、MDFファイルがなぜ、いつの間に作成されていたのか、、、
まだ理解できていないところはありますが、とりあえず先には進めそうです。
教えていただいた皆様、ありがとうございました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.064s