Почему этот код вызывает ошибку? - PullRequest
2 голосов
/ 16 июля 2010

Я часами искал способ подключения к моей локальной базе данных 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.config", расположенном в корневом каталогетекущее веб-приложение.Для этого тега должен быть установлен атрибут «mode» «Off».

Я создал файл web.config, и он ничего не изменил.Я так потерян.Любая помощь приветствуется!

Трассировка стека: [SqlException (0x80131904): Невозможно открыть базу данных "dbtest", запрошенную при входе в систему.Ошибка входаНе удалось войти в систему для пользователя «IIS APPPOOL \ DefaultAppPool».]
System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое прерывание соединения) +6244425 System.Data.SqlClient.TdsParser.ThrowExceptionOar2OarSignOар_парень_произведения_произведения_произведения_пользователя_произведения_произведения_произведения_произведения_произведения_пользователя_произведения_произведения_пользователя* System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj).Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (serverInfo serverInfo, String новый_пароль, булева ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) + 248
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover (String хост, String новый_пароль, булева redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +6260362 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject, SqlConnectionString connectionOptions, String новый_пароль, булева redirectedUserInstance) +6260328 System.Data.SqlClient.SqlInternalConnectionTds..ctor (DbConnectionPoolIdentity идентичность, SqlConnectionString connectionOptions, объект providerInfo, Строка новый_пароль, SqlConnection owningObject, Boolean redirectedUserInstance) + 354
System.Data.SqlClient.SqlConnectionFactory.CreateConnection (параметры DbConnectionOptions, объект poolGroupProviderInfo, пул DbConnectionPool, DbConnection owningConnection) + 703
System.Data.ProviderBase.DbConnectionDnectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionConnectionDectionOnectionChancePalctionOctionOnectionOnectionOctionSystem.Data.wningObject) + 1657
System.Data.ProviderBase.DbConnectionFactory.GetConnection (DbConnection owningConnection) + 88
System.Data.ProviderBase.DbConnectionClosed.OpenConnection (DbConnection externalConnection, DbConnection.Data * 52F).SqlClient.SqlConnection.Open () +258 ASP.index_aspx .__ Render__control1 (HtmlTextWriter __w, Управляющий параметрContainer) +71 System.Web.UI.Control.RenderChildrenInternal (писатель HtmlTextWriter.Page.Render (писатель HtmlTextWriter) + 38
System.Web.UI.Page.ProcessRequestMain (BooleanincludeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) + 4240

Ответы [ 4 ]

7 голосов
/ 16 июля 2010

Это здесь

Невозможно открыть базу данных "dbtest" запрашивается логином. Логин не удалось. Ошибка входа для пользователя IIS AppPool \ DefaultAppPool '

Учетная запись удостоверения пула приложений настроена в SQL Server, но не настроена в базе данных dbtest. Вы получаете другое сообщение об ошибке, если не можете подключиться к экземпляру SQL Server, но вы подключаетесь, чтобы получить это сообщение об ошибке выше.1

Итак, в SQL:

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

Edit:

Когда вы подключаетесь к «базе данных», вы фактически аутентифицируетесь 3 раза (в основном)

  1. В Windows / домен установить хост с экземпляром SQL Server (выходит за рамки здесь)
  2. Для экземпляра SQL Server, где вы входите в систему, вы можете настроить SQL Server через CREATE LOGIN
  3. Этот логин соответствует нулю или нескольким базам данных как «пользователь», что вам и нужно сделать здесь

В этом случае вы были настроены в SQL Server как логин, но не настроены в целевой базе данных, размещенной в экземпляре SQL Server.

1 голос
/ 16 июля 2010

Поместите тег CustomError и значение правильно, например:

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

Это откроет вам точную проблему.

0 голосов
/ 16 июля 2010

Следовали ли вы всем инструкциям и убедились, что тег customerErrors в файле web.config выглядит следующим образом:

<customErrors mode="Off" />

И настоящая ошибка заключается в том, что пользователь ASP.Net работает, так как не имеет разрешения для входа в базу данных.

0 голосов
/ 16 июля 2010

Попробуйте установить источник данных = (локально)

...