2012-06-04 5 views
0

Я пытаюсь создать старый сайт, написанный в ASP Classic на моей локальной машине. Я использую SQL Server 2008 и IIS ver 7.5.Classic ASP - Ado Recordset Open()

У меня возникла ошибка при попытке открыть соединение с базой данных.

Я использовал советы в this post

использовать UDL, файл, чтобы создать и протестировать свою строку соединения, так что я знаю, строка подключения работ. Я использую проверку подлинности Windows, и я уверен, что пул приложений, на котором работает этот сайт, имеет доступ к базе данных, поскольку я использую один и тот же пул для нескольких сайтов, и все они могут нормально подключиться.

При открытии соединения я пытаюсь запустить хранимую процедуру, если я просто выписал сохраненную строку proc и запустил ее непосредственно в моей базе данных, она работает так, как ожидалось.

Вот код:

Const adUseClient = 3 
Const adCmdStoredProc = 4 
Const adOpenStatic = 3 
Const adLockBatchOptimistic = 4 

dim connectstring,sql 
connectstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=my-database;Data Source=(local)\SQLEXPRESS" 
sql = "MyProc '" & param1 & "','" & param2 & "'" 
set rs = Server.CreateObject("ADODB.RecordSet") 
rs.CursorLocation = adUseClient 
rs.CursorType = adOpenStatic 
rs.LockType = adLockBatchOptimistic 
' this is where it is failing 
rs.Open sql, connectstring, 3 

Одной из проблем является ошибка я получаю, кажется, генерируется IIS, он просто говорит: произошло

Ошибка на сервере при обработке URL , Пожалуйста свяжитесь с системным администратором.

Если вы являетесь системным администратором, пожалуйста, нажмите здесь, чтобы узнать об этой ошибке.

Когда я нажимаю на ссылку «нажмите здесь», она приведет меня к общей странице о запуске сайтов ASP Classic на IIS 7, но я не смог найти ничего, что казалось бы важным для моей ошибки. Кажется, я не могу найти, где получить информацию об ошибке. В крайнем случае я проверил журналы Event Viewer-> Windows, но не было записей для моих ошибок.

У меня Googled и попробовал несколько перестановок в строке подключения, но безрезультатно. Если бы кто-нибудь советовался о том, как решить эту проблему, или даже о том, где искать решение, я был бы благодарен. Большое спасибо!

** EDIT: **

Ok Я изменил настройки IIS, чтобы показать ошибки в браузере, и теперь я получаю сообщение об ошибке, немного более полезным, здесь:

Поставщик Microsoft OLE DB для ошибки SQL Server «80004005»

Не удается открыть базу данных «rw-gp», запрошенную при входе в систему. Ошибка входа в систему.

Теперь, когда я обнаружил это, я обнаружил, что это часто может быть проблемой с разрешениями. Как вы можете видеть, я использую проверку подлинности Windows, и я запускаю сайт под пулом приложений, у которого есть разрешение на подключение к базе данных. У меня есть несколько сайтов ASP.NET, настроенных локально, которые запускаются в этом пуле приложений, и они могут подключаться с использованием интегрированной безопасности. Я не уверен, что происходит не так, есть ли у кого-нибудь предложения?

+0

Это проблема ASP/IIS, а не SQL Server. Кроме того, вы когда-нибудь слышали о SQL Injection, вызванном конкатенацией строк? Или использовать квалификаторы схемы при ссылке на объекты в SQL Server? – gbn

ответ

2

Сценарий ASP Classic всегда работает с использованием олицетворения (это отличается от ASP.NET, где по умолчанию отключено олицетворение).

Следовательно, пользователю, нуждающемуся в доступе к БД, в силу использования SSPI, должен быть выдан пользователь.

Выдающийся пользователь по умолчанию является учетной записью IUSR, указанной как анонимный пользователь, однако, если вы включили встроенную защиту Windows, то пользователь может вполне по учетной записи пользователя, на которой работает клиентский браузер. В любом случае вам необходимо убедиться, что пользователь, которому выдают себя за образец, имеет доступ к БД или прекращает использование SSPI.

Если вы используете только анонимный доступ, вы можете указать через диспетчер IIS, что учетная запись, используемая для анонимного доступа, является идентификатором пулов приложений.

Смежные вопросы