Почему этот код вызывает ошибку?

Я часами искал, как подключиться к моей локальной базе данных 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, и он ничего не изменил. Я так потерялся. Любая помощь приветствуется!

Это здесь


person Liam    schedule 16.07.2010    source источник


Ответы (4)


Невозможно открыть базу данных "dbtest", запрошенную при входе в систему. Не удалось войти в систему. Ошибка входа для пользователя IIS APPPOOL \ DefaultAppPool

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

Итак, в SQL:

Редактировать:

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

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

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

  1. К экземпляру SQL Server, где вы являетесь «логином», настройте SQL Server через CREATE LOGIN
  2. Этот логин соответствует нулю или более базам данных в качестве «пользователя», что вам и нужно здесь сделать.
  3. Поместите тег и значение CustomError правильно, например:

В Windows / домен установите хостинг экземпляра SQL Server (здесь выходит за рамки)

person gbn    schedule 16.07.2010
comment
Это требует предостережения, чтобы он был особенно внимателен к тому, какие объекты и какие команды он дает разрешение в базе данных. - person Liam; 16.07.2010
comment
Между IIS и APPPOOL есть пробел. - person Orion Adrian; 16.07.2010
comment
СПАСИБО!! ЭТО РАБОТАЕТ Хотя может кто-нибудь объяснить мне причину этой ошибки? Все это очень сбивало с толку. - person Orion Adrian; 16.07.2010
comment
@Liam, веб-страница не запускается под вашей учетной записью, она запускается под другой, более ограниченной учетной записью по соображениям безопасности - в частности, чтобы веб-страницы не могли выполнять опасные действия. По умолчанию в базе данных нет логина для этой ограниченной учетной записи - зачем это было. - person Liam; 16.07.2010
comment
Спасибо за помощь :) - person Orion Adrian; 16.07.2010
comment
Он печатает стек, но я не знаю, что с этим делать. - person Liam; 16.07.2010

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

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

Попробуйте установить Data Source = (local)

person Kangkan    schedule 16.07.2010
comment
Таким образом, вход пользователя в базу данных завершился неудачно (это видно из результатов трассировки). Введите фактический идентификатор пользователя и пароль в строку подключения. Используемый пользователь - пул приложений IIS [пользователь 'IIS APPPOOL \ DefaultAppPool'] - person Liam; 16.07.2010
comment
Да, это вызвало ошибку в этой строке. По какой-то причине этот код не работает - person Kangkan; 16.07.2010

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

person Toan Nguyen    schedule 16.07.2010

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

<customErrors mode="Off" />

Сообщение 15401, уровень 16, состояние 1, строка 1 Пользователь Windows NT или группа «IISAPPPOOL \ DefaultAppPool» не найдены. Проверьте имя еще раз

person Andrew Kennan    schedule 16.07.2010
comment
Если вы установите для customErrors значение Off в своем web.config, вы получите более подробное сообщение об ошибке. - person Liam; 16.07.2010
comment
Неважно, я попробовал еще раз, и это напечатало трассировку стека для меня. - person Andrew Kennan; 16.07.2010
comment
Трассировка стека: [SqlException (0x80131904): не удается открыть базу данных «dbtest», запрошенную при входе в систему. Не удалось войти в систему. Ошибка входа для пользователя «IIS APPPOOL \ DefaultAppPool».]
System.Data.SqlClient.SqlInternalConnection.OnError (исключение SqlException, логическое breakConnection) +6244425 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserObject) <состояние > System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObteContextLog +28dslqinstateObject stateObtejata.S2811
SystemInleConnectStateObject_CopyHandler) +28dslObject stateObtejata.S2811
SystemIndex.clientSql_Sql5 .Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo, String newPassword, логическое значение ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +248
System.Data.SqlClient.SqlInternalConnectionTools, StringFireInternalConnectionToys, StringUnderBlackDataSqlClient.sqlInternalConnectionToys , SqlConnectionString connectionOptions, Int64 timerStart) + 6260362 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist (SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +6260328 System.Data.SqlInternalConnectionTds. , Boolean redirectedUserInstance) +354
System.Data.SqlClient.SqlConnectionFactory.CreateConnection (параметры DbConnectionOptions, Object poolGroupProviderInfo, пул DbConnectionPool, DbConnection owningConnection) +703
OwningConnectionDatabConnectionConnectionConnectionData.ConnectionBaseingConnectionData.ConnectionProviderBaseing. pool, параметры 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.ProviderBasesed.DbConnectionCloction (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 System. children) +11. UI.Page.Render (писатель HtmlTextWriter) +38
System.Web.UI.Page.ProcessRequestMain (логическое includeStagesBeforeAsyncPoint, логическое includeStagesAfterAsyncPoint) +4240 - person Liam; 16.07.2010