web-dev-qa-db-ja.com

SQL Serverのユーザーインスタンスの生成に失敗しました

Windows 7ベータ版を使用していて、ローカルにWebアプリケーションをインストールしようとしています。このWebサイトはMicrosoft SQL Server 2005 Express(SQLEXPRESS)およびWebサイトの〜/ App_Dataフォルダー内のMDBファイルを使用します。このWebアプリケーションにClassic .NET AppPoolを使用するようにIIS7を構成するように指示されました。

Webサイトが読み込まれるたびに、次のエラーが表示されます。

データベースサーバーに接続しようとしてエラーが発生しました:ユーザーのローカルアプリケーションデータパスの取得に失敗したため、SQL Serverのユーザーインスタンスを生成できませんでした。ユーザーがコンピューターにローカルユーザープロファイルを持っていることを確認してください。接続は閉じられます。

インターネットには、この主題に関する記事が満載です。支配的な知恵は次のようです:

  1. Local Systemアカウントを使用するようにSQL Expressサービスを構成します。
  2. 次のディレクトリを削除します。C:\ Users\username\AppData\Microsoft\Microsoft SQL Server Data\SQLEXPRESS

これらの修正はどちらも影響を与えていません。私は何時間も権限と設定をいじくり回して、役に立たなかった。誰かが修正を提案したり、問題の詳細情報を取得する方法を理解したりできますか?.

8
Gabe Sumner

IIS Windows 7では、アプリケーションプールを選択し、[詳細設定]を選択します。[プロセスモデル]で[ユーザープロファイルの読み込み]を見つけて、trueに設定します。

これで、SQLがデフォルトのアプリプールアカウントでロードされます。

13
Ereck Johan

ブライアン、

これがすべて理にかなっているために、まず、タスクマネージャーのすべてのユーザーのプロセスリストを確認します。

w3wp.exeは新しいWWWワーカープロセスです。 DefaultAppPoolと呼ばれるユーザーの権限を使用して、セキュリティサンドボックスで実行されます。

昔は、DefaultAppPoolユーザーの代わりに、IUSRユーザーとIWAMユーザーでした( IISのIUSRアカウントとIWAMアカウントは何ですか? を参照)。

SQLメンバーシッププロバイダーを使用すると、w3wp.exeプロセスはSQL Serverユーザーインスタンスを開始し、接続文字列で指定されたデータベース(通常はApp_Data/ASPNETdb.mdf)にアタッチします。 SQL Serverのユーザーインスタンスを実行するには、一時ファイルがどこかに移動できるように、ローカルプロファイルが必要です。

トラブルシューティングの手順:

  1. プロセスw3wp.exeがDefaultAppPoolユーザーによって実行されていることを確認します。
  2. SQL Serverでユーザーインスタンスが有効になっていることを確認します(config_valueおよびrun_valueを参照)
    exec sp_configure 'user instances enabled'
  3. 実行しない場合
    sp_configure 'user instances enabled', 1
    その後:再構成
  4. ASPNETdb.mdfがSQL Serverの別のユーザーインスタンスによって接続されている場合に備えて、SQL Serverを再起動します。
  5. ローカルユーザープロファイルC:\ Users\DefaultAppPoolディレクトリが存在することを確認します。そうでない場合は、LocalProfile = Trueをオンにします。これにより、ローカルプロファイルが作成されます。これは、IISマネージャ、アプリケーションプール、DefaultAppPool、詳細設定...で行われます。
  6. データベースにさらに問題がある場合は、SQL構成マネージャーを使用してユーザーインスタンスに接続し、dbが接続されているかどうかを確認します。正しいinstance_pipe_nameに接続する必要があります。
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
1
teyc

ワークステーションでも同じ問題が発生しましたが、サーバーでは発生していません。

これは一時的にウェブで見つけた一時的な修正で、うまくいくようです:

クエリエディターで次のように入力します:exec sp_configure 'user instances enabled'、1then:Reconfigure

次に、SQL Serverデータベースを再起動します。

これが見つかりました link 今日

そしてStackOverflowでクイック検索した後 https://stackoverflow.com/questions/281500/error-failed-to-generate-a-user-instance-of-sql-server

1
Brian Boatright