sqlexpress接続はIIS 7で失敗しますw/ userインスタンスエラー - "ユーザーインスタンスの生成に失敗しました
-
28-10-2019 - |
質問
主に以下の私の質問#1に答えようとしていますが、より多くの知識が高く評価されます。
調査中にこれらのリソースを使用しようとしましたが、失敗しました。
http://social.msdn.microsoft.com/forums/en/sqldatabaseengine/thread/f5eb164d-9774-4864-ae05-cac99740949b (このエラーの場合: ユーザーのローカルアプリケーションデータパスの取得に失敗したため、SQL Serverのユーザーインスタンスを生成できませんでした。ユーザーがコンピューター上にローカルユーザープロファイルがあることを確認してください。接続は閉じられます。)
http://social.msdn.microsoft.com/forums/en-us/sqlexpress/thread/6dfdcc22-7a81-4e8f-a947-c1ce6982d4b3/ (このエラーの場合: データベースマスターで拒否されたデータベース許可を作成します。ファイルに自動名データベースを添付しようとする試み?失敗した。同じ名前のデータベースが存在するか、指定されたファイルを開くことはできません。または、UNC共有に配置されます。)
質問
1.)IIS 7を使用したASP.NET Ajax "Live Demos"プロジェクトのTelerik Rad Controlsの実行中にこのエラーが発生する理由
ユーザーのローカルアプリケーションデータパスの取得に失敗したため、SQL Serverのユーザーインスタンスを生成できませんでした。ユーザーがコンピューター上にローカルユーザープロファイルがあることを確認してください。接続は閉じられます。
2.)SQL Server Expressインスタンスの作成は、ASP.NET Development Server&SSMSEからIIS 7の異なるインスタンスをどのように異なりますか
3.)さまざまなコンテキストでWebサイトを実行するときに許可されていないSQL接続文字列の特定の属性がありますか(#2に基づいて)。
環境:
「Live Demos」.NET 3.5 ASP.NET WebアプリケーションをASP.NET開発サーバーを介して実行していません(Visual Studioで[プレイ]をクリックした後、システムトレイにポップアップし、ポートを選択します)。それはうまく機能します! IIS 7でWebサイトを実行しています。SQLServerExpressは、コントロールパネル> [管理ツール]> [サービス]> [SQLEXPRESS)でネットワークサービスユーザーを使用しています。
この接続文字列を使用して、インストールされている「ライブデモ」Webアプリケーションデモプロジェクトで提供されます。
<add name="NorthwindConnectionString"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Northwind.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
「ユーザーインスタンス= false」を設定しようとしましたが、別のエラーをスローするだけです。
データベースマスターで拒否されたデータベース許可を作成します。ファイルに自動名データベースを添付しようとする試み?失敗した。同じ名前のデータベースが存在するか、指定されたファイルを開くことはできません。または、UNC共有に配置されます。
(ここで、 "?"は *.mdfファイルのパスです-c: users mydocuments visual studio 2008 projects telerikdemos telerik radcontrols for asp.net ajax q2 live demos app_data northwind.mdf ..スタックオーバーフローイタリックはそれらの文字の一部で壊れているので、そのパスを削除する必要がありました)
この「ユーザーインスタンス= false」を設定するために、以前の質問で誰かが私に答えてくれましたが、ユーザーインスタンスはSQL Expressを使用するかどうかとは何の関係もないようです。ユーザーインスタンスは、非常に優秀なユーザーが独自のユーザーコンテキストでデータベースインスタンスをホストできるようにするSQL Expressの単なる機能です。
注、このNorthwindデータベースは、 *.ldf(ログファイル)とともに、app_dataフォルダー(「ライブデモ」ルートアプリケーションディレクトリの下)の *.mdfファイルに保存されています。以前に、 *.mdfファイルを「データベース」フォルダー(SSMSEオブジェクトエクスプローラーツリー)の下の実際のデータベースとして添付してみましたが、後で削除しました。
Webアプリケーション「ライブデモ」ルートフォルダー(およびネストされたフォルダー/ファイル)には、次のユーザーがすべての特権を割り当てています。
-iis apppool telerik( "Telerik"は、このサイトのIIS 7のアプリケーションプールの名前です)
-IUSR
- ネットワークサービス
このsqlexpressマスターデータベースクエリについて自分でメモを取る:
select * from Sys.dm_os_child_instancesを選択します
また、SQL Server(SQLEXPRESS)Windows 7サービス(コントロールパネル>管理ツール>サービス)でユーザーを変更しながら、 *.MDF& *.LDF許可の異なる組み合わせを試しました。また、それらの変更を行った後にサービスを再起動しました。
再現するには:
ASP.NET AjaxのTelerik Rad Controlsをダウンロードします。プログラムファイルの下の「Live Demos」フォルダーで言及したpermimssionsを設定し、Webアプリケーションの.NETバージョンを.NET 3.5に変更し、そのフォルダーの通常のweb.configファイルを使用して3.5 web.configファイルを切り替えます。 Visual Studio 2010を使用する必要がありますが、Visual Studio 2008でこれを実行しています(私たちの会社がまだVS2010にいないので、少しうなり声を上げました)。また、適切なBIN35アセンブリを「ライブデモ」フォルダーBINフォルダーに切り替えます。ソリューションをコンパイルします。 IIS 7 Webサイトを作成します。 Windows認証を追加します。匿名およびWindows認証を有効にしました。他のすべてが無効になっています。クラシックと32ビットを使用するようにアプリケーションプールを設定します。
次に、このURLに移動し、「最初の外観」画像をクリックします。
http://localhost/combobox/examples/overview/defaultcs.aspx
====================
要求された場合、さらなる証拠が提供されます。
解決
信頼できるAuthentication = trueで接続文字列を使用しています。これは、接続が呼び出しプロセスのセキュリティコンテキストを使用することを意味します。
開発サーバーを使用して実行すると、ログインしたユーザーのセキュリティコンテキストで実行されているため、すべてが正常に機能します。
IISで実行すると、ユーザープロファイルがないネットワークサービスであるアプリケーションプールプロセスのセキュリティコンテキストにあります。したがって、クラッシュします。
どちらでも修正できます。
- データベースにアクセスしてアプリケーションプールのIDを通常のユーザーに変更する
- ユーザー名とパスワードで接続文字列を使用します
他のヒント
IISはWindowsユーザープロファイルをロードしませんが、特定のアプリケーションはとにかくそれを利用して一時的なデータを保存する可能性があります。 SQL Expressは、これを行うアプリケーションの例です。ただし、プロファイルディレクトリまたはレジストリハイブのいずれかに一時データを保存するには、ユーザープロファイルを作成する必要があります。ネットワークサービスアカウントのユーザープロファイルはシステムによって作成され、常に利用可能でした。ただし、一意のアプリケーションプールIDに切り替えた場合、システムによってユーザープロファイルは作成されません。標準のアプリケーションプール(DefaultAppPoolとClassic .NET AppPool)のみがディスクにユーザープロファイルを持っています。管理者が新しいアプリケーションプールを作成した場合、ユーザープロファイルは作成されません。
ただし、必要に応じて、LoadUserProfile属性を「true」に設定して、IISアプリケーションプールをユーザープロファイルをロードするように構成できます。
https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities