2012-06-04 5 views
0

내 로컬 컴퓨터에서 ASP Classic로 작성된 레거시 사이트를 설정하려고합니다. SQL Server 2008 및 IIS 버전 7.5를 사용하고 있습니다. 나는 데이터베이스에 대한 연결을 열 때Classic ASP - Ado Recordset Open()

나는 오류로 실행하고 있습니다.

은 내가 연결 문자열 일을 알 수 있도록 만들어 내 연결 문자열을 테스트하기 위해 따라 .udl 파일을 사용하여 this post

에 조언을 사용했다. 나는 Windows 인증을 사용하고 있으며이 사이트를 실행중인 응용 프로그램 풀이 여러 사이트에 대해 동일한 풀을 사용하고 모두 잘 연결할 수 있으므로 데이터베이스에 대한 액세스 권한이 있음을 확신합니다.

난 그냥 저장된 프로 시저 문자열을 작성하고 예상대로 작동 내 데이터베이스에서 직접 실행하는 경우 나, 저장 프로 시저를 실행하려고하고있는 연결을 여는. 여기

코드입니다 :

문제의
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을 처리 할 때

하는 동안 서버에 오류가 발생했습니다 . 시스템 관리자에게 문의하십시오.

시스템 관리자는이 오류에 대해 자세히 알아 보려면 여기를 클릭하십시오. 나는 그것이 IIS 7에서 ASP 클래식 사이트를 실행하는 방법에 대한 일반적인 페이지로 나를 걸리는 "여기를 클릭"링크를 클릭하면

은, 그래도 난 내 오류와 관련된 것 같았다 아무것도 찾을 수 없습니다. 오류에 대한 정보를 얻을 수있는 곳을 찾지 못하는 것 같습니다. 최후의 수단으로 이벤트 뷰어 -> Windows 응용 프로그램 로그를 검사했지만 오류가 발생하지 않았습니다.

내가 봤 연결 문자열에하지만 아무 소용이 여러 순열을 시도했습니다. 누구든지이 문제를 해결하는 방법에 대한 조언이나 해결 방안을 찾는 데 대한 아이디어가 있다면 감사 할 것입니다. 감사합니다!

** 편집 : **

내가 브라우저에서 오류를 표시하기 위해 IIS 설정을 변경하고 지금은 여기있다, 좀 더 유용한 오류 메시지가 무엇입니까 확인 :

'80004005'

SQL Server 오류 Microsoft OLE DB 공급자 수 없습니다 로그인에서 요청한 데이터베이스 "RW-GP '. 로그인에 실패했습니다.

지금 내가 인터넷 검색을 할 때 이것은 종종 권한 문제 일 수 있음을 발견했습니다. 보시다시피 저는 Windows 인증을 사용하고 있으며 데이터베이스에 연결할 수있는 권한이있는 응용 프로그램 풀에서 사이트를 실행하고 있습니다. 여러 ASP.NET 사이트가이 응용 프로그램 풀에서 실행되는 로컬로 설정되어 있고 통합 보안을 사용하여 연결할 수 있습니다. 무슨 일이 일어날 지 모르겠다. 아무도 제안을하지 않니?

+0

이것은 SQL Server가 아닌 ASP/IIS 문제입니다. 또한 문자열 연결로 인한 SQL 주입에 대해 들어 본 적이 있습니까? 또는 SQL Server에서 개체를 참조 할 때 스키마 한정자를 사용합니까? – gbn

답변

2

ASP 기본 스크립트 항상이 가장을 사용하여 실행됩니다.이 것은 가장 (impersonation)이 기본적으로 해제 된 ASP.NET과 다릅니다.

는 따라서 SSPI의 사용의 미덕하여 DB에 액세스해야하는 사용자는 사용자가 명의 도용 될 필요가있다.

가장 된 사용자는 기본적으로 익명 사용자로 지정된 IUSR 계정이지만 Windows 통합 보안을 사용하도록 설정 한 경우 사용자는 클라이언트 브라우저가 실행중인 사용자 계정으로 로그인 할 수 있습니다. 두 경우 모두 가장 된 사용자가 DB에 액세스하거나 SSPI 사용을 중지해야합니다.

익명 액세스 만 사용하는 경우 IIS 관리자를 통해 익명 액세스에 사용할 계정이 응용 프로그램 풀 ID임을 지정할 수 있습니다.