2

ローカル SQL データベースに接続する方法を何時間も探していました。こんなに大変だったなんて信じられない。とにかく、私はこのコードでより正しい軌道に乗っていると思います。

<%
    Dim myConnection as System.Data.SqlClient.SqlConnection
    Dim myCommand as System.Data.SqlClient.SqlCommand

    myConnection = New System.Data.SqlClient.SqlConnection("Data Source=localhost;Initial Catalog=dbtest;Integrated Security=True")
    myConnection.Open()
%>

ただし、それでも機能しません。ページの読み込み時に次のメッセージも表示されるため、どこから始めればよいかわかりません。

ランタイムエラー

説明:サーバーでアプリケーション エラーが発生しました。このアプリケーションの現在のカスタム エラー設定では、アプリケーション エラーの詳細をリモートで表示できません (セキュリティ上の理由から)。ただし、ローカル サーバー マシンで実行されているブラウザで表示することはできます。

詳細:この特定のエラー メッセージの詳細をリモート マシンで表示できるようにするには、現在の Web アプリケーションのルート ディレクトリにある "web.config" 構成ファイル内にタグを作成してください。次に、このタグの「モード」属性を「オフ」に設定する必要があります。

web.config ファイルを作成しましたが、何も変わりませんでした。私はとても迷っています。どんな助けでも大歓迎です!

スタック トレース: [SqlException (0x80131904): ログインによって要求されたデータベース "dbtest" を開けません。ログインに失敗しました。ユーザー 'IIS APPPOOL\DefaultAppPool' のログインに失敗しました。]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +6244425 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
System.Data.SqlClient .TdsParser.Run(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj) +2811
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo、文字列 newPassword、ブール値の ignoreSniOpenTimeout、Int64 timerExpire、SqlConnection owningObject) +248
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +6260362 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +6260328 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity ID, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +354
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions オプション、オブジェクト poolGroupProviderInfo、DbConnectionPool プール、DbConnection owningConnection) +703
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection、DbConnectionPool プール、DbConnectionOptions オプション) +54 System.Data.ProviderBase .DbConnectionPool.CreateObject(DbConnection owningObject) +6261592
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +81
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +1657
System.Data.ProviderBase.DbConnectionFactory.GetConnection( DbConnection owningConnection) +88
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +6265031
System.Data.SqlClient.SqlConnection.Open() +258 ASP.index_aspx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) +71 System.Web.UI .Control.RenderChildrenInternal(HtmlTextWriter ライター、ICollection の子) +115
System.Web.UI.Page.Render(HtmlTextWriter ライター) +38
System.Web.UI.Page.ProcessRequestMain(ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) +4240

4

4 に答える 4

7

ここです

ログインで要求されたデータベース「dbtest」を開けません。ログインに失敗しました。ユーザー 'IIS APPPOOL\DefaultAppPool' のログインに失敗しました

アプリケーション プール ID アカウントは SQL Server で設定されていますが、データベース dbtest では設定されていません。SQL Server インスタンスに接続できなかった場合は、別のエラー メッセージが表示されますが、上記のエラー メッセージを表示するために接続しています.1

したがって、SQL では次のようになります。

USE dbtest
GO
CREATE USER [IIS APPPOOL\DefaultAppPool] FROM LOGIN [IIS APPPOOL\DefaultAppPool]

編集:

「データベース」に接続すると、実際には3回認証されます(基本的に)

  1. SQL Server インスタンスをホストする Windows/ドメイン インストール (ここでは範囲外)
  2. あなたが「ログイン」しているSQL Serverインスタンスに、CREATE LOGINを介してSQL Serverをセットアップします
  3. このログインは、「ユーザー」として 0 個以上のデータベースにマップされます。これは、ここで行う必要があることです。

この場合、SQL Server でログインとして設定されていますが、SQL Server インスタンス内でホストされているターゲット データベースでは設定されていません。

于 2010-07-16T05:17:36.390 に答える
1

次のように、CustomError タグと値を適切に配置します。

<configuration>
    <system.web>
      <customErrors mode="Off"/>
    </system.web>
</configuration>

これにより、正確な問題が明らかになります。

于 2010-07-16T05:08:13.257 に答える
0

Data Source=(local) を設定してみてください

于 2010-07-16T05:07:27.740 に答える
0

すべての指示に従い、web.config の customerErrors タグが次のようになっていることを確認しましたか?

<customErrors mode="Off" />

実際のエラーは、ASP.Net を実行しているユーザーがデータベースにログインする権限を持っていないことのようです。

于 2010-07-16T05:07:47.440 に答える