2

主に以下の私の質問 #1 に答えようとしていますが、より多くの知識をいただければ幸いです。

調査中にこれらのリソースを使用しようとしましたが、失敗しました:

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/f5eb164d-9774-4864-ae05-cac99740949b (このエラーについて: ユーザーのローカル アプリケーション データ パス。ユーザーがコンピュータ上にローカル ユーザー プロファイルを持っていることを確認してください。接続は閉じられます。 )

http://social.msdn.microsoft.com/forums/en-US/sqlexpress/thread/6dfdcc22-7a81-4e8f-a947-c1ce6982d4b3/ (このエラーの場合: データベース マスターで CREATE DATABASE 権限が拒否されました。ファイルの自動命名データベース ? に失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、または UNC 共有にあります。 )

質問

1.) IIS 7 で Telerik Rad Controls for ASP.NET AJAX "Live Demos" プロジェクトを実行しているときにこのエラーが発生するのはなぜですか (Telerik Live Demos の実行は、この接続文字列で ASP.NET 開発サーバーを使用して正常に動作します)。

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

2.) ASP.NET 開発サーバーおよび SSMSE とは異なり、IIS 7 で SQL Server Express インスタンスを作成する方法

3.) 異なるコンテキストで Web サイトを実行するときに許可されない SQL 接続文字列の特定の属性がありますか (#2 に基づく)。

環境:

ASP.NET 開発サーバー経由で「Live Demos」.NET 3.5 ASP.NET Web アプリケーションを実行していません (システム トレイにポップアップし、Visual Studio で再生をクリックした後にポートを選択する機能)。それはうまくいきます!IIS 7 で Web サイトを実行しています。SQL Server Express は、[コントロール パネル] > [管理ツール] > [サービス] > [SQL Server (SQLExpress)] で NETWORK SERVICE ユーザーを使用しています。

インストールされた「Live Demos」Web アプリケーション デモ プロジェクトで提供されるこの接続文字列を使用します。

<add name="NorthwindConnectionString"
             connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Northwind.mdf;Integrated Security=True;User Instance=True"
             providerName="System.Data.SqlClient" />

「User Instance=False」を設定しようとしましたが、別のエラーがスローされます。

データベース マスターで CREATE DATABASE 権限が拒否されました。ファイル の自動命名データベースを接続しようとしていますか? 失敗した。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、ファイルが UNC 共有にあります。

(「?」は *.mdf ファイルのパス - C:\Users\\MyDocuments\Visual Studio 2008\Projects\TelerikDemos\Telerik\RadControls for ASP.NET AJAX Q2 2011\Live Demos\App_Data\Northwind.mdf .. スタック オーバーフローの斜体は、これらの文字の一部で壊れているため、そのパスを削除する必要がありました)

以前の質問で、この「User Instance=False」を設定するように誰かが私に答えましたが、ユーザー インスタンスは、SQL Express を使用するかどうかとは何の関係もないようです。ユーザー インスタンスは、非常に権限のないユーザーが独自のユーザー コンテキストでデータベース インスタンスをホストできるようにする SQL Express の単なる機能です。

この Northwind データベースは、App_Data フォルダー ("Live Demos" ルート アプリケーション ディレクトリの下) の *.mdf ファイルに、*.ldf (ログ ファイル) と共に格納されることに注意してください。以前、*.mdf ファイルを実際のデータベースとして (SSMSE オブジェクト エクスプローラー ツリーの) "Databases" フォルダーの下に添付しようとしましたが、後でそれらを削除しました。

Web アプリケーションの "Live Demos" ルート フォルダー (およびネストされたフォルダー/ファイル) には、次のユーザーにすべての権限が割り当てられて い ます
。ネットワークサービス


この SQLExpress マスター データベース クエリについて、自分用にメモしておきます。

SELECT * FROM sys.dm_os_child_instances

また、SQL Server (SQLExpress) Windows 7 サービス ([コントロール パネル] > [管理ツール] > [サービス]) でユーザーを変更しながら、*.mdf と *.ldf のアクセス許可のさまざまな組み合わせを試し、それらの変更を行った後にサービスを再起動しました。

ここに画像の説明を入力

再現するには:

ASP.NET AJAX 用の Telerik Rad Controls をダウンロードします。Program Files\Telerik の下の "Live Demos" フォルダーで前述の権限を設定し、Web アプリケーションの .NET バージョンを .NET 3.5 に変更し、3.5 の web.config ファイルをそのフォルダー内の通常の web.config ファイルに切り替えます。 . Visual Studio 2010 を使用する必要がありますが、私はこれを Visual Studio 2008 で実行しています (私たちの会社はまだ VS2010 を使用していないため、少し面倒な作業を行いました)。また、適切な Bin35 アセンブリを "Live Demos" フォルダーの Bin フォルダーに切り替えます。ソリューションをコンパイルします。IIS 7 Web サイトを作成します。Windows 認証を追加します。匿名認証と Windows 認証を有効にしました。他のすべては無効になっています。クラシックおよび 32 ビットを使用するようにアプリケーション プールを設定します。

次に、この URL に移動し、「First Look」の画像をクリックします。

http://localhost/combobox/examples/overview/defaultcs.aspx

====================

要求があれば、より多くの証拠が提供されます。

4

2 に答える 2

2

信頼できる認証 = true の接続文字列を使用しています。これは、接続が呼び出しプロセスのセキュリティ コンテキストを使用することを意味します。

ログインしているユーザーのセキュリティコンテキストで実行している開発サーバーで実行すると、すべてが正常に機能します。

IIS で実行すると、ユーザー プロファイルを持たないネットワーク サービスであるアプリケーション プール プロセスのセキュリティ コンテキストにいるため、クラッシュします。

次のいずれかで修正できます。

  • アプリケーション プールの ID を、データベースにアクセスできる通常のユーザーに変更します。
  • ユーザー名とパスワードで接続文字列を使用する
于 2011-09-09T21:21:53.720 に答える
0

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

于 2018-03-22T13:49:14.493 に答える