質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

2回答

1165閲覧

asp.net MVC5で配置後のSQLについて

AMK

総合スコア765

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

1クリップ

投稿2023/03/28 22:24

編集2023/03/29 09:20

配置後にSQLのエラーを消したい

デバッグでは問題なく動作するのですが
IISに配置したらSQLの接続エラーになる

試したこと

IISは、トップページは問題なく表示されているのでIISは問題無いと判断

デバッグでデータ登録、SQLエクスプレスにはSQLマネージャーでデータが登録されたことを確認

SQLのネットワーク設定
ポート、外部接続、TCP設定などをして
接続のServer名入れるところでIPアドレスでログイン出来る

これでSQLネットワーク設定は問題無い?

サーバーのエラーログはLocalDBでエラーログが出ている

これって、SQLexpress参照していないと言うことでしょうか?

Web.config

1 <connectionStrings> 2 <add name="MyDatabase" connectionString="Data Source=localhost\sqlexpress;Initial Catalog=MyDatabase;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 3 </connectionStrings>

知りたいこと

本番環境(配置後)でSQLexpressに接続させる方法を知りたいです

3月29日17時以降追加作業

SQL設定変更=>名前付きパイプを有効
Web.config=>localhost から自分のIPアドレスに変更
lmhosts.samの変更=>160.251.95.17 160-251-95-17 #PREを追加
※自分学習用のテスト環境なのでIPばれても問題ないです
PING確認イメージ説明

エラーログ記載

イメージ説明

  • LocalDB インスタンスのレジストリ構成にアクセスしているときに予期しないエラーが発生しました。エラーの詳細については、Windows アプリケーション イベント ログを参照してください。
  • ローカル アプリケーション データ パスを取得できません。多くの場合、ユーザー プロファイルを読み込めない可能性があります。LocalDB を IIS で実行している場合は、現在のユーザーのプロファイルの読み込みが有効になっていることを確認してください。
  • Windows API 呼び出し SHGetKnownFolderPath はエラー コードを返しました: 5。Windows システム エラー メッセージ: アクセスが拒否されました。

。行: 427 での応答。

SQLのログ
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/03/29 01:15 編集

ひどい情報不足です。不足していること全部をいちいち聞くのも大変なのでまず一番重要な情報と思われることを 2 つ聞きます。 > サーバーのエラーログはLocalDBでエラーログが出ている エラーメッセージを質問欄を編集して追記してください。 もう一つ、MVC アプリに設定してある接続文字列を書いてください。
AMK

2023/03/29 04:10

申し訳ない、外で消したいスマホで書いたので情報量少なくなってしまいました サーバーのエラーログにSQLLocalとあるのは、SQLexpressでも同じでしょうか? expressなら別のタイトルなのでは? expressでも同じエラーのタイトルならSQLの設定、DBの切り替えが出来て無い説もあると思うし、 エラーログのタイトルがexpressでSQLLocalでは無いならDBの切り替えは成功していているので、SQLの設定の問題なのか? 問題の切り分けが出来るか?と思い質問しておりました
退会済みユーザー

退会済みユーザー

2023/03/29 04:57 編集

> 問題の切り分けが出来るか?と思い質問しておりました できません。 こんなことではなかろうかと想像はしてますが、想像ベースで答えて想像が違っていると混乱を招くばかりなので、まずはあなたが上の質問に答えてください。
AMK

2023/03/29 06:19

そうなのですね、勉強になります 出先なので帰ったらエラーログ遅らせていただきます よろしくお願い致します
lucky-ponta

2023/03/29 07:07

確認ですが、ConnectionString記載の内容で、 「Data Source=サーバの名前\SQLEXPRESS;Initial Catalog=データベース名;User ID=・・・」 で、VSで、デバッグ検証して動作していたものをIISに配置したらエラー。 これを、 「Data Source=IPアドレス\SQLEXPRESS;Initial Catalog=データベース名;User ID=・・・」 にして、配置すると接続できる、ということを想定して回答します。
退会済みユーザー

退会済みユーザー

2023/03/29 07:11

lucky-ponta さん> 質問者さんは「出先なので帰ったらエラーログ遅らせていただきます」とのことですので、それまで待ちましょう。想像ベースで答えて想像が違っていると混乱を招くので。
退会済みユーザー

退会済みユーザー

2023/03/29 09:40

追加情報が意味不明です。 エラーメッセージ「LocalDB インスタンスのレジストリ構成にアクセスしているときに・・・」を見るとLocalDB に接続に行って失敗しているようですが、Web.config の接続文字列はローカルの SQL Express が指定してあります。 どうなってるんですか?
AMK

2023/03/29 10:21

今出しているログは、3月29日17時以降追加作業のタイトルの作業後のログになります。 なのでweb.configはIP指定からの指定になります。 ちなみに160-251-95-17\SQLEXPRESSに変更しても同じく状況変わりませんでした 160-251-95-17はping通りました
退会済みユーザー

退会済みユーザー

2023/03/29 11:14

> 今出しているログは、3月29日17時以降追加作業のタイトルの作業後のログになります。 > なのでweb.configはIP指定からの指定になります。 言ってることが理解できません。 とにかく先に書いた以下の矛盾がどういうことか答えてください。 エラーメッセージ「LocalDB インスタンスのレジストリ構成にアクセスしているときに・・・」を見るとLocalDB に接続に行って失敗しているようですが、Web.config の接続文字列はローカルの SQL Express が指定してあります。 Data Source の設定とか ping が通ったかどうかは、上のことがクリアになってからの話です。
AMK

2023/03/29 11:53

配置しているconfigもちゃんとExpress指定されてるんです やっぱりLocalDBに接続しに行っているという事でしょうか? 解らないなりにいろいろと設定をしたので謎の設定をしてしまったのかも知れないです・・・・
AMK

2023/03/29 12:00

矛盾を説明しろと言われても、なぜこうなっているのか?わかってない状態です。 なので、前にも書きましたがDBの切り替え作業が出来ているのか?LocalDBにアクセスしているのか?切り分けが出来るのではないか?と予測を聞いておりました。
退会済みユーザー

退会済みユーザー

2023/03/29 12:54

話が通じない・・・ > やっぱりLocalDBに接続しに行っているという事でしょうか? 接続文字列で LocalDB を指定しない限り LocalDB に接続に行くということはありません。開発環境でLocalDB を使っていて、その設定が運用環境でもそのままになっているのでは? > 解らないなりにいろいろと設定をしたので謎の設定をしてしまったのかも知れないです・・・・ いろいろやったことを書いているようですが、それでは閲覧者・回答者がついていけません。 色々変えるのは止めて、今現在の設定に固定して、そこからもういじらないで、その設定で試して、エラーメッセージがどうなるかと接続文字列を書いてください。
退会済みユーザー

退会済みユーザー

2023/04/01 01:08 編集

質問者さん、ギブアップですか? それならそれで構いませんので、その旨書いてこのスレッドはクローズしてください。 まだやる気があるなら、上に書いたように、色々変えるのは止めて、今現在の設定に固定して、そこからもういじらないで、その設定で試して、エラーメッセージがどうなるかと接続文字列を書いてください。 質問に書かれた接続文字列は SQL Server Express に接続するもので、それで LocalDB ナンチャラというエラーが出るはずはないのです。それなのに、なぜ LocalDB ナンチャラというエラーが出るのか、そこをクリアにしないと先に進めません。
guest

回答2

0

 ググっただけですが、下記でMicrosoftの記事が紹介されていました。
WebSurfer's Home: LocalDB で Northwind と Pubs を利用
類似例の試行錯誤になるようです。
Using LocalDB with Full IIS, Part 1: User Profile

Windows API call SHGetKnownFolderPath returned error code: 5. Windows system error message is: Access is denied.Reported at line: 400.

Cannot get a local application data path. Most probably a user profile is not loaded. If LocalDB is executed under IIS, make sure that profile loading is enabled for the current user.

さっぱりわかりませんが、localDB有りExpressからlocalDB無しExpressにエクスポート・インポートっぽい事を???

投稿2023/03/29 17:31

logres_Fan

総合スコア164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/03/30 00:48

> さっぱりわかりませんが、localDB有りExpressからlocalDB無しExpressにエクスポート・インポートっぽい事を??? 分かってないのに、そういう回答者を惑わすことを書くのは止めましょうよ。LocalDB と SQL Server Express は別物です。「localDB有りExpress」とか「localDB無しExpress」というのは無いです。質問者さんが開発環境で LocalDB を使っていたかどうかも不明です(エラーメッセージを見るとそうではないかと想像してはいますが)。
logres_Fan

2023/03/30 07:05

失礼しました。LocalDBを使っていたかなどの追加情報が開示されて進捗するといいですね。
guest

0

IIS側で、サーバの名前解決ができていないだけのように思います。
IIS及びDBサーバの設定等を変更したりできることを想定しますが
(客先だったりすると、難しいですよね…)

①接続先のSQLServerの、構成マネージャで、
・クライアントプロトコルで、TCP/IP=有効、名前付きパイプ=有効
※初期だと無効になっているのかも。

②IISサーバ上の、LMHOSTSにて、SQLServer搭載のサーバのIPアドレスを、名前でも参照できるように設定
※設定前に、コマンドプロンプトで、SQLServerの名前でPINGが通れば問題ないかと思います。
通常(?)、PING確認するときはIPアドレスを入力したりすると思うのですが、
それを、サーバ名(パソコン名)にして接続できれば、大丈夫だったように思います。

②だけでも大丈夫だったような気がします。
検証環境がありましたら、事前にお試しください。


ASP.Net WebFormの開発で、同様の現象で悩んで、私が解決した方法となります。
かなり昔のことなので、記憶が怪しいですし、
私自身、ASP.NET MVC5での開発経験がないので、もしかしたら他の方法があるかもです。
そこはご了承ください。

投稿2023/03/29 07:09

lucky-ponta

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/03/30 00:54

名前解決の問題ではなさそうです。 エラーメッセージ「LocalDB インスタンスのレジストリ構成にアクセスしているときに・・・」を見るとLocalDB に接続に行って失敗しているようです。その失敗の原因は IIS のワーカープロセスがユーザープロファイルを持ってない(すなわち、IIS では LocalDB は使えない)からです。 しかし、質問に書かれた接続文字列は SQL Server Express に接続するもので、それで LocalDB ナンチャラというエラーが出るはずはないのが不思議です。そこがクリアにならないと先に進めません。
lucky-ponta

2023/03/30 04:24

私の記述した内容は"LocalDB"への対応ではなかったですね、失礼しました。 私が開発したシステムのSQLServerは、Expressの検証環境と、Standardの運用環境となっています。 LocalDBについては知識不足です。混乱させて申し訳ございません。 WEBサーバとDBサーバが別ハードの運用でうまくいかなかったとき(名前解決が必要なケース) 上記設定等が必要でした、ということで、ご理解いただければ。 IIS&LocalDBでの環境がないので、試してみることはできませんが、 こちらに、VS経由で実行したときと、IISで実行したときに違いがあった、ということが載っていました。 → https://qiita.com/belre/items/65422a8ee154476fd99b 質問者さんが記載したエラー内容に、 「ユーザーのプロファイルが読み込めない」「アクセスが拒否された」とありましたので、 権限が絡んでいるのでは?との推測です。試してみてはいかがでしょうか。
退会済みユーザー

退会済みユーザー

2023/03/30 06:22

>「ユーザーのプロファイルが読み込めない」「アクセスが拒否された」とありましたので、権限が絡んでいるのでは?との推測です。試してみてはいかがでしょうか。 何を試すのですか? 運用環境 ⇒ すなわち IIS で ASP.NET アプリをホストする ⇒ IIS のデフォルトのワーカープロセスはユーザープロファイルは持たない ⇒ LocalDB は使えないということで、権限の問題ではないのですけど。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問