원격 공유에서 가리키는 가상 폴더를 통해 데이터베이스에 액세스하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/339663

문제

원격 서버에있는 데이터베이스에 액세스하는 데 문제가 있습니다.

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

가상 폴더 (웹 앱 루트 디렉토리의)는 UNC 경로를 통해 원격 서버의 공유를 가리키고 있습니다.

\\databaseServerName\databaseFolder$\ 

가상 폴더에는 '읽기'및 '찾아보기'권한이 'true'로 설정되어 있습니다.

web.config의 'AppSettings'섹션에 연결 문자열을 저장합니다.

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>

연결 객체는 내 .aspx 페이지에서 declard입니다.

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

연결 객체를 사용하려는 코드는 다음과 같습니다.

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

위의 코드를 실행하면 다음 오류가 발생합니다 (코드 'objconnvirtual.open ()'의이 줄에 :
예외 세부 사항 : System.Data.OLEDB.OLEDBEXCEPTION : 유효한 파일 이름이 아닙니다.

데이터베이스 이름을 확인했는데 정확합니다 (복사/붙여 넣기도 확인하기 위해 복사/붙여 넣었습니다)

연결 문자열의 '데이터 소스'섹션을 내 브라우저의 주소 표시 줄에 넣으면 원격 서버에서 공유의 내용을 성공적으로 볼 수 있습니다.

이것이 권한이나 코드에 문제인지 확실하지 않습니다.
나는 이것에서 쓰레기를 구글링했지만 해결책을 찾을 수 없었습니다.

모든 도움은 대단히 감사합니다.

도움이 되었습니까?

해결책 5

업데이트

먼저 답변을 제출 한 모든 분들께 감사드립니다.

그러나 우리는 결국 끝났다 ~ 아니다 '가상 폴더를 통해 원격 데이터베이스에 연결'메소드를 사용 하여이 작업을 수행하는 데 필요한 권한의 복잡성으로 인해 가치가있는 것보다 더 많은 문제가 발생했기 때문입니다. 우리는 UNC 경로를 연결 문자열에 다시 넣었습니다.이 방법은이 작업을 수행하는 가장 좋은 방법은 아니지만 우리를 위해 일하고 있습니다.

다른 팁

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

애플리케이션 풀 ID에 원격 공유에 연결할 적절한 권한이 있는지 확인하십시오. IIS 6에서 기본적으로 네트워크 서비스 계정으로 작업하고 있는데,이 계정은 기본적으로 원격 공유에 액세스 할 수 없습니다.

가장 좋은 방법은 전용 서비스 사용자와 앱풀을 실행하도록하는 것입니다.

웹 앱이 DB 파일을 읽으려고 할 때 서버에서 사용되는 계정은 무엇입니까? 이 사용자 계정이 무엇이든, 해당 폴더/파일을 읽을 권한이 필요합니다. IIS6에서는 사용자 계정을 사용하도록 가상 폴더를 구성 할 수 있습니다 ... 디렉토리 보안 탭에는 인증 및 액세스 제어에 편집 버튼이 있습니다.

오류 메시지는 일반적인 오류 메시지 일 뿐이며 권한 문제가 실제 문제 일 것 같습니다.

두 서버가 서로 내부 액세스 권한이 있는지 확인하고 연결 문자열에 DB 서버의 IP 및 포트를 지정하십시오.

업데이트

나는 또한 그것을 언급해야한다 내 컴퓨터에서 작동합니다 (그러나 한 번 생산 상자에로드되지는 않았다) Web.config의 'AppSettings'섹션에서 연결 문자열을 선언하면 :

<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=\\databaseServerName\databaseFolder$\databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top