Как получить доступ к базе данных через виртуальную папку, которая указывает на удаленный общий ресурс
-
19-08-2019 - |
Вопрос
У меня проблема с получением доступа к базе данных, которая находится на удаленном сервере. Р>
У меня есть веб-страница ASP.NET 2.0, которая пытается подключиться к базе данных.
Доступ к базе данных осуществляется через виртуальную папку (которую я настроил в IIS).
Виртуальная папка указывает на удаленный общий ресурс, который содержит базу данных. Р>
Виртуальная папка (в корневом каталоге веб-приложений) указывает на общий ресурс на удаленном сервере по пути UNC:
\\databaseServerName\databaseFolder$\
Виртуальная папка имеет права «чтение» и «просмотр», для которых установлено значение «истина». Р>
Я храню строку подключения в разделе appSettings файла web.config:
<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>
Объект подключения объявлен на моей странице .aspx:
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 необходимо указать UNC-путь, например \\ remoteMachine \ Share \ test.mdb.
Убедитесь, что у удостоверения пула приложений есть необходимые разрешения для подключения к удаленному общему ресурсу. По умолчанию в IIS 6 вы работаете с учетной записью сетевой службы, которой по умолчанию не разрешен доступ к удаленному общему ресурсу.
Лучший способ - запустить AppPool с выделенным пользователем службы.
Какая учетная запись используется на вашем сервере, когда ваше веб-приложение пытается прочитать файл БД? Какой бы ни была эта учетная запись пользователя, у нее должны быть разрешения на чтение этой папки / файла. В IIS6 вы можете настроить виртуальную папку для использования любой учетной записи пользователя ... на вкладке Безопасность каталога есть кнопка Изменить под Аутентификацией и контролем доступа.
Вполне вероятно, что ваше сообщение об ошибке является просто общим сообщением об ошибке, и проблема с разрешениями является вашей реальной проблемой.
убедитесь, что оба сервера имеют внутренний доступ друг к другу, а также укажите ip & amp; порт сервера базы данных в строке подключения.
Обновление
Следует также упомянуть, что он работает на моей машине ( но не один раз загружается в рабочий ящик), если я объявлю строку подключения в разделе 'appSettings' файла web.config следующим образом:
<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=\\databaseServerName\databaseFolder$\databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>
Это заставляет меня думать, что это может быть связано с необходимостью использования учетных данных домена, отличных от локальной учетной записи IUSER.