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 异常,布尔 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, String newPassword, Boolean 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 身份,SqlConnectionString connectionOptions,对象 providerInfo,字符串 newPassword,SqlConnection owningObject,布尔重定向用户实例)+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 拥有连接)+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 writer, ICollection children) +115
System.Web.UI.Page.Render(HtmlTextWriter writer) +38
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4240

4

4 回答 4

7

它在这里

无法打开登录请求的数据库“dbtest”。登录失败。用户 'IIS APPPOOL\DefaultAppPool' 登录失败

应用程序池身份帐户在 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. 此登录作为“用户”映射到零个或多个数据库,这是您需要在此处执行的操作

在这种情况下,您在 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 回答