Как успешно подключиться к файлам базы данных Foxpro, используя функцию MSSQL Linked Server и ODBC?
Мы пытаемся получить доступ к файлам базы данных Foxpro на основе файлов через функцию связанного сервера MSSQL Server, используя драйвер Foxpro ODBC.
Для этого мы
- установил последнюю версию драйвера Foxpro ODBC от Microsoft,
- сделал системный DSN, который использует этот драйвер
- выбрал опцию "База данных Visual FoxPro (.DBC)" в разделе "Тип базы данных" вместо "Каталог свободных таблиц"
- указал путь к нашему файлу dbc (на локальной машине)
- установлен MSSQL Server 2008 R2 Express
- установлен MSSQL Server Management Studio 2008
- попытался создать новый связанный сервер с помощью мастера графического интерфейса, например:
Но последний шаг никогда не завершается (выполнение отображается навсегда). Когда Management Studio принудительно закрывается и перезапускается, новый связанный сервер существует, но содержит только подпункт "Каталоги". Если мы попытаемся расширить его, Management Studio снова зациклится.
2 ответа
- Загрузите и установите Microsoft OLE DB Provider для Visual FoxPro
- Убедитесь, что он отображается в MSSQL Management Studio в разделе Системные объекты> Связанные серверы> Провайдеры как VFPOLEDB. Мне пришлось установить его, удалить его и переустановить, пока я его там не получил (и нет, перезапуск Windows не работал).
- Откройте системные объекты, щелкните правой кнопкой мыши связанные серверы и выберите добавление нового связанного сервера.
- Заполните форму следующим образом:
- Нет необходимости добавлять какие-либо уведомления о доставке в апплет ODBC
- Нажмите OK и посмотрите, сможете ли вы развернуть новый связанный сервер, пока не увидите таблицы.
- Щелкните правой кнопкой мыши по какой-нибудь таблице и запишите запрос SELECT в новое окно запроса. Это дает вам пример того, как запросить этот новый связанный сервер:
SELECT * FROM [myLinkedServer]...[myTable]
Первое, что нужно сделать, это убедиться, что вы используете 32-битные драйверы, если у вас 32-битный SQL Server и 64-битные драйверы, если вы используете 64-битный SQL Server. 64-разрядные серверы SQL не могут использовать 32-разрядные драйверы ODBC (или OLEDB или что-либо еще).
У меня были старые драйверы ODBC от Microsoft, которые сбивали экземпляры сервера, поэтому я их избегаю.
На последних версиях SQL Server 2005+ у меня был лучший успех с драйверами "ACE". Эти драйверы заменяют старые драйверы "JET" и были представлены в Office 2007. Они основаны на OLEDB, но вы не обязательно заметите. Релиз для Office 2010, который поставляется в 32-битной и 64-битной версиях. Вторично распространяемые драйверы ACE доступны для загрузки на сайте Microsoft.
С новыми драйверами вам не нужно создавать системный DSN, как со старыми драйверами ODBC. Вы можете просто создать связанный сервер и перейти. В Интернете должно быть много примеров того, как создавать связанные серверы с использованием драйверов ACE (как с TSQL, так и с графическим интерфейсом SSMS).
Вы должны быть уверены, что провайдер, представляющий ваши драйверы (см. Папку "Связанные серверы" для папки "Провайдеры"), установлен на "Разрешить в процессе" и.
Вы также можете обнаружить, что доступ к файлам в сети сложнее, чем доступ к одному и тому же файлу на локальном диске. Обычно это проблема с делегированием и безопасностью. В зависимости от вашей инфраструктуры может возникнуть проблема.
(Если вам интересно, я три или четыре года назад сделал несколько записей в блоге "Legacy Connectivity в 64-битном мире", посвященных проблемам dbase/foxpro, 32/64 битам, плюс db/2 и другим. это, вероятно, больше, чем там, где вы хотели бы прочитать. Это было еще до выпуска 64-битных драйверов ACE, и сейчас все стало лучше.)