Я пытаюсь создать старый сайт, написанный в 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, настроенных локально, которые запускаются в этом пуле приложений, и они могут подключаться с использованием интегрированной безопасности. Я не уверен, что происходит не так, есть ли у кого-нибудь предложения?
Это проблема ASP/IIS, а не SQL Server. Кроме того, вы когда-нибудь слышали о SQL Injection, вызванном конкатенацией строк? Или использовать квалификаторы схемы при ссылке на объекты в SQL Server? – gbn