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


8

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

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

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

インターネットはこの主題について書かれた記事でいっぱいです。支配的な知恵は次のようです:

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

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


IISはどのサービスアカウントで実行されていますか?そのためのアカウントを作成してみましたか?
ブレントオザー

回答:


13

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

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


1

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

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

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

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

今日このリンクを見つけました

StackOverflowでクイック検索した後/programming/281500/error-failed-to-generate-a-user-instance-of-sql-server


1

ブライアン、

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

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
    
    
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.