VisualStdio2015からSqlServerへアクセスできない
受付中
回答 2
投稿
- 評価
- クリップ 0
- VIEW 1,628
VisualStdio2015からSqlServerへアクセスしたい
モデルの開発(ASP.NET MVC)をしているのですが、
VisualStdio2015からWeb.configファイル経由でSqlSerVerへアクセスする際に
ブラウザ側で、Web.configファイルにエラーが表示されます。
以下のようなエラーです。
「パーサー エラー メッセージ: 認識されない構成セクション connectionString です。」
このメッセージから、<connectionStrings>タグで発生しているエラーだとわかりました。
Web.configファイルの<connectionStrings>タグの構成としては、
<add>要素を追記し、
name属性にコンテキストクラスの名前を、
connectionString属性に
Date Source(接続するSQLサーバのホスト名)と
Initial Catalog(DB名)と
AttachDBFilename(適当なDBファイルのフルパス)
Integrated Security = True(windows認証のため)
providerName = "System.Data.SqlClient"(←ここが良く分かりませんでしたので、ネットで調べてSQLOLEDBにも設定して試しましたが接続できませんでした)
設定した項目は以上になります。
接続するための方法を教えてください。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
SqlServerのエディションとバージョンは
Microsoft SQL Server 2014 - 12.0.2269.0 (X64)
でVisualStdioはMicrosoft VisualStdio Express 2015 for webです。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
質問者さんが何をしているのか不明ですので、接続文字列を取得できない原因と対策をピンポイントで回答することはできませんが、以下のやりたいことはこうすればできるという方法・説明を書いておきます。
Microsoft SQL Server 2014 - 12.0.2269.0 (X64)
テーブルから取り出したメンバー情報をブラウザで一覧表示することを試みています。
LocalDB または SQL Server Express 版でないと EF Code First で DB を生成することはできないので、SQL Server 2014 のインスタンスにアタッチされた既存の DB のテーブルのレコード一覧を表示したいということと理解して説明します。理解が違っていたらどこがどう違うか詳しく書いてください。
SQL Server 2014 のインスタンスにアタッチされた既存の DB がある場合は、Visual Stidio の ADO.NET Entity Data Model ウィザードを利用して EDM を生成し、それをベースに Visual Studio のスキャフォールディング機能を使って Controller と View を自動生成すれば、自分では一行もコードを書かなくても Create, Read, Update, Delete (CRUD) 操作を行うための ASP.NET MVC アプリを作ることができます。
その中には当然一覧表示する機能も含まれます。
詳しい手順は以下の記事を見てください。
スキャフォールディング機能
http://surferonwww.info/BlogEngine/post/2017/07/23/creating-controller-and-view-in-mvc-using-scaffolding-function.aspx
接続文字列は自力で書かなくてもウィザードが自動的に生成してくれます。上の記事の「(8) 接続文字列の確認と web.config への保存」のセクションの画像を見てください。
その画像にあるように、NORTHWINDEntities という名前で接続文字列が web.config の connectionStrings セクションに以下のように設定されます。
これが私の言う「取得される側の web.config の生のコード」です。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
・・・中略・・・
<connectionStrings>
・・・中略・・・
<add name="NORTHWINDEntities"
connectionString="metadata=res://*/NorthwindEdm.csdl|res://*/NorthwindEdm.ssdl|res://*/NorthwindEdm.msl;provider=System.Data.SqlClient;provider connection string="data source=(local)\sqlexpress;initial catalog=NORTHWIND;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
・・・中略・・・
</connectionStrings>
・・・中略・・・
</configuration>
一方、私が言う「接続文字列を取得しようとしている側の生のコード」は EDM を自動生成する際、これもやはり自動生成されるコンテキストクラスのコンストラクタに、以下の画像の通り設定されます。
この EDM をベースにスキャフォールディング機能でアプリを自動生成すると、以下のような一覧表示の機能もそれに含まれます。コードは、接続文字列等を含め、自分では一行も書く必要はありません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
<connectionString>
・・・云々・・・
</connectionString>
ではなく
<connectionStrings>
・・・云々・・・
</connectionStrings>
なのでは?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
SurferOnWww
2019/01/06 18:50
接続文字列を取得しようとしている側の生のコードと、取得される側の web.config の生のコードを書いてください。きちんと情報を提供してもらわないと誰にも何も分かりません。
SurferOnWww
2019/01/06 19:04
注: SQL Server にアクセスできるできない以前の問題です。接続文字列が取得できていない。
r.i.
2019/01/09 19:21
分かりました。ありがとうございます
接続文字列を取得するにはどうすればいいのでしょうか?
このような書き方です
<configuration>
・・・他のタグ・・・
<connectionString>
<add name ="「コンテキストクラス名」" connectionString ="Date Source = 「接続するSQLサーバのホスト名」;Initial Catalog=「DB名」; AttachDBFilename=「DBファイル=.mdfのフルパス」; Integrated Security = True"/>
</connectionString>
</configuration>
SurferOnWww
2019/01/09 19:48
接続文字列を取得しようとしている側の生のコードと、取得される側の web.config の生のコードを書いてください・・・とお願いしたのですが。理解されてますか?
r.i.
2019/01/09 20:03
すみません
初学者なのでよく理解できません
本には接続文字列は<connectionString>-<add>要素内のconnectionString属性(パラメータ=値;...の形式)のことだと記載されていました
SurferOnWww
2019/01/09 20:14
「本」と言われても持ってない人には何も分かりません。Visual Studio 2015 のテンプレートを利用して MVC アプリのプロジェクトを自動生成したのではないのですか? であれば、その話(具体的にどのテンプレートを使って、どのような設定にしてプロジェクトを自動生成させたか)から始めないと・・・ そうではなくて、質問者さんが独自に作ったものもしくは「本」独自の方法だとすると、第三者には何も分かりません。
r.i.
2019/01/09 21:43
テーブルから取り出したメンバー情報をブラウザで一覧表示することを試みています。
エンティティを定義し、コンテキストクラスにDbSet<定義したエンティティ型>のプロパティを定義し、そのプロパティは同名のテーブルにアクセスし定義したエンティティのインスタンスに割り当てます
そのご、コントローラー内のviewメソッドにコンテキストクラスのプロパティを渡しています。
コントローラーからモデルにアクセスして、テーブルの内容をブラウザ上で表示したいというのがやりたいことです。
この過程で、DBにアクセスする情報をWeb.configに記載しました・・・
SurferOnWww
2019/01/09 22:34
そう言われても、今までの説明は決して具体的ではなく、少なくとも自分には、あなたが何をしているのか分かりません。何となく EF Code First で何かしたのかなと想像してますが、その程度です。一度 https://teratail.com/help/question-tips を読んでください。それにも書いてありますが、現状「自分が今『何がわからないのか』がわかっていて、言語化できている」というのができておらず、「何がわからないかわからない人から質問を受けても、答える側も困ってしまいます」という状況です。
r.i.
2019/01/13 19:30 編集
確かにそうですね
ASP>NETの初学者で、かつterateilで初めての質問でしたが、自分が何がしたいのかをきちんと理解して、整理して質問するべきでした
ちなみに本は秀和システムのASP.NET MVC5のスキャフォールディング機能の説明の前(2章)(モデルからテーブルに接続する)で、スキャフォールディング機能もまだ学習していない段階です
回答していただきありがとうございます。
回答していただいた内容を元に、問題の解決と更なる学習に努めたいと思います。
r.i.
2019/01/13 20:04 編集
まだスキャフォールディング機能の前段階なので、また理解してから分かりやすいようにご説明します
SurferOnWww
2019/01/13 20:22
だから「本」がどうのこうの言われても、本を持ってない人には何もわからないということを認識しましょう。前にも書きましたが、一度 https://teratail.com/help/question-tips を読んでください。そして、「自分が今『何がわからないのか』がわかっていて、言語化できている」ができてないところを何とかしてください。一番最初に書きましたが、接続文字列を取得しようとしている側の生のコードと、取得される側の web.config の生のコードを書いてください。きちんと情報を提供してもらわないと誰にも何も分かりません。
r.i.
2019/01/13 20:37
はい そうします(一度保留でお願いします)