为什么这段代码会导致错误?

Lia*_*iam 2 asp.net connection ado.net sqlclient

我一直在寻找如何连接到我的本地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()
%>
Run Code Online (Sandbox Code Playgroud)

但是,它仍然无法正常工作.我不知道从哪里开始,因为我在页面加载时也收到此消息:

运行时错误

说明:服务器上发生应用程序错误.此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因).但是,它可以由运行在本地服务器计算机上的浏览器查看.

详细信息:要在远程计算机上查看此特定错误消息的详细信息,请在位于当前Web应用程序根目录中的"web.config"配置文件中创建标记.然后,此标记应将其"mode"属性设置为"Off".

我创建了一个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,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 identity,SqlConnectionString connectionOptions,Object providerInfo,String newPassword,SqlConnection owningObject,Boolean redirectedUserInstance)+354
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,Object 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 writer,ICollection children)+115
System.Web.UI.Page.Render(HtmlTextWriter writer)+38
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+4240

gbn*_*gbn 7

它在这里

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

App Pool身份帐户在SQL Server中设置,但未在数据库dbtest中设置.如果无法连接到SQL Server实例,则会收到不同的错误消息,但是您正在连接以获取上面的此错误消息.

所以,在SQL中:

USE dbtest
GO
CREATE USER [IIS APPPOOL\DefaultAppPool] FROM LOGIN [IIS APPPOOL\DefaultAppPool]
Run Code Online (Sandbox Code Playgroud)

编辑:

连接到"数据库"时,实际验证3次(基本上)

  1. 托管SQL Server实例的Windows /域安装(此处超出范围)
  2. 对于SQL Server实例,您在"登录"中通过CREATE LOGIN设置SQL Server
  3. 此登录名称作为"用户"映射到零个或多个数据库,这是您需要在此处执行的操作

在这种情况下,您在SQL Server中设置为登录,但未在SQL Server实例中托管的目标数据库中进行设置.