2008-12-04 2 views
0

원격 서버에있는 데이터베이스에 액세스하는 데 문제가 있습니다.원격 공유를 가리키는 가상 폴더를 통해 데이터베이스에 액세스하는 방법

데이터베이스에 연결하려는 ASP.NET 2.0 웹 페이지가 있습니다.
데이터베이스에 가상 폴더 (IIS에서 설정)를 통해 액세스합니다.
가상 폴더는 데이터베이스가 포함 된 원격 공유를 가리 킵니다. 가상 폴더로 설정 권한을 '검색', '읽기'와있다

\\databaseServerName\databaseFolder$\ 

: (웹 루트 디렉토리 애플 리케이션에)

가상 폴더는 UNC 경로를 통해 원격 서버의 공유에 가리키는 '참된'.

이 연결 개체 내 .aspx 페이지에 declard됩니다
<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/> 

: 여기

Dim objConnVirtual As New OleDbConnection(ConfigurationManager.AppSettings("conStrVirtual")) 

코드입니다

나는의 Web.config의 'appSettings는'섹션에서 연결 문자열을 저장

Public Sub Test() 
    If objConnVirtual.State <> ConnectionState.Open Then 
     objConnVirtual.Open() 
    End If 
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM TableName", objConnVirtual) 
    objDR = cmd.ExecuteReader() 
    If objDR.Read() Then 
     response.write("Shazaam! Data shows up here") 
    End If 
    objDR.Close() 
    objConnVirtual.Close() 
End Sub 

위의 코드를 실행하면 다음과 같은 전자 메일이 표시됩니다. rror (이 코드 줄의 'objConnVirtual.Open()':
예외 정보 : System.Data.OleDb.OleDbException : 유효한 파일 이름이 아닙니다.

나는 데이터베이스 이름을 확인하고는 올바른

(심지어 복사/그것을 확인하기 위해 붙여 넣기) 내 브라우저의 주소 표시 줄에 연결 문자열의 '데이터 원본'섹션을 넣으면

I 원격 서버의 공유 내용을 성공적으로 볼 수 있습니다.

사용 권한이나 코드에 문제가 있는지 확실하지 않습니다.
나는이 헛소리를 봤지만 해결책을 찾을 수 없었다.

어떤 도움

이 많이 감사합니다.

답변

0

UPDATE

첫번째로는 답변을 보내 주신 모든 분들께 감사드립니다.

그러나 가상 폴더를 통해 원격 데이터베이스에 연결하는 방법을 사용하면 이 아닌이되었습니다.이 작업을 수행하는 데 필요한 권한이 복잡해지기 때문에 더 많은 문제가 발생했습니다. 우리는 UNC 경로를 연결 문자열로 되돌려 놓았습니다.이 연결 문자열은 가장 좋은 방법은 아니지만 우리를 위해 일하고 있습니다.

0

두 서버가 서로 내부적으로 액세스 할 수 있는지 확인하고 연결 문자열에 db & 포트도 지정하십시오.

1

원격 Access MDB 데이터베이스에 액세스 할 때 \\ remoteMachine \ Share \ test.mdb와 같은 UNC 경로를 지정해야합니다.

응용 프로그램 풀 ID에 원격 공유에 연결할 수있는 권한이 있는지 확인하십시오. 기본적으로 IIS 6에서는 네트워크 서비스 계정으로 작업하고 있습니다.이 계정은 기본적으로 원격 공유에 액세스 할 수 없습니다.

가장 좋은 방법은 AppPool을 전용 서비스 사용자와 함께 실행시키는 것입니다.

+0

안녕 루이, 답변 주셔서 감사합니다. AppPool을 전용 서비스 사용자와 함께 실행 시키자 '라는 말의 의미를 확장 할 수 있습니까? 내 응용 프로그램 용으로 새 응용 프로그램 풀을 추가했지만 여전히 웹 페이지를 통해 데이터베이스에 액세스 할 수 없습니다. – Dhaust

+0

또한 UNC 경로에 데이터베이스 이름을 넣지 않아도됩니다. 현재 연결 문자열 (데이터 원본 = http : //webAppServerName/virtualFolderName/databaseName.mdb)에 데이터베이스 이름이 있습니다. – Dhaust

+0

안녕하세요. Windows 2003 Server에서 IIS 6을 사용하면 응용 프로그램 풀이 ID로 실행됩니다. 기본적으로 이것은 네트워크 서비스 계정입니다. 응용 프로그램이 실행되면이 사용자의 컨텍스트에서 실행됩니다. ID 탭에서 변경할 수 있습니다. MDB는 http를 통해 직접 액세스 할 수 없습니다. –

0

업데이트

나는 웹의 'appSettings는'섹션에서 연결 문자열을 선언하는 경우가 works on my machine (그러나 한 번 생산 상자까지 적재)하는 것도 언급해야한다.다음과 같이 구성하십시오.

이렇게하면 로컬 IUSER 계정 이외의 도메인 자격 증명을 사용해야하는 문제가 될 수 있습니다.

1

웹 응용 프로그램이 db 파일을 읽으려고 할 때 서버에서 사용되는 계정은 무엇입니까? 이 사용자 계정이 무엇이든간에 해당 폴더/파일을 읽을 수있는 권한이 있어야합니다. IIS6에서는 모든 사용자 계정을 사용하도록 가상 폴더를 구성 할 수 있습니다 ... 디렉터리 보안 탭에는 인증 및 액세스 제어 아래에있는 편집 단추가 있습니다.

오류 메시지는 일반적인 오류 메시지 일 뿐이며 사용 권한 문제는 실제 문제 일 수 있습니다.