Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Помогите прицепить фокспрошные таблицы, на форуме нарыл следующий код
SELECT * FROM 
OPENDATASOURCE('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};
FIL=dBase III;
DefaultDir=d:\tmp\foxu')...AA
SELECT * FROM 
OPENDATASOURCE('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};
FIL=dBase IV;
DefaultDir=d:\tmp\foxu')...AA
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};
DBQ= d:\tmp\foxu',
'SELECT * FROM AA.DBF') as dBase
Однако все они выдаю такую ошибку
Поставщик OLE DB "MSDASQL" для связанного сервера "(null)" вернул сообщение "[Microsoft][ODBC dBase Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x760 Thread 0x1778 DBC 0x58e1c54 Xbase'.".
Поставщик OLE DB "MSDASQL" для связанного сервера "(null)" вернул сообщение "[Microsoft][ODBC dBase Driver] Disk or network error.".
Msg 7303, Level 16, State 1, Line 1
Не удалось проинициализировать объект источника данных поставщика OLE DB "MSDASQL" для связанного сервера "(null)".

Через визард Import and Export Data (32-bit) с источником .Net Framework Data Provider for Odbc
и следующим DSN все работает (кодировка только почему-то сломалась, хотя вначале работало отлично, но сейчас не об этом)
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\fxp100]
"Driver"="C:\\Windows\\system32\\odbcjt32.dll"
"DefaultDir"="D:\\TMP\\FOXU"
"DriverId"=dword:00000015
"FIL"="dBase III;"
"SafeTransactions"=dword:00000000
"UID"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\fxp100\Engines]

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\fxp100\Engines\Xbase]
"CollatingSequence"="ASCII"
"Deleted"=hex:01
"ImplicitCommitSync"=""
"PageTimeout"=dword:00000258
"Statistics"=hex:00
"Threads"=dword:00000003
"UserCommitSync"="Yes"

Создание linked server с Microsoft OLE DB Provider for ODBC Drivers и этим дсн тоже не удается

TITLE: Microsoft SQL Server Management Studio
------------------------------

The linked server has been created but failed a connection test. Do you want to keep the linked server?

------------------------------
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

Не удалось проинициализировать объект источника данных поставщика OLE DB "MSDASQL" для связанного сервера "FXXX".
Поставщик OLE DB "MSDASQL" для связанного сервера "FXXX" вернул сообщение "[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed".
Поставщик OLE DB "MSDASQL" для связанного сервера "FXXX" вернул сообщение "[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed".
Поставщик OLE DB "MSDASQL" для связанного сервера "FXXX" вернул сообщение "[Microsoft][ODBC dBase Driver] Disk or network error.". (Microsoft SQL Server, Error: 7303)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.00.2531&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476

------------------------------
BUTTONS:

&Yes
&No
------------------------------
29 мар 10, 08:58    [8546166]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/faq/faq_topic.aspx?fid=146
29 мар 10, 09:10    [8546191]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Линкед сервер 'VFPOLEDB'
Поставщик OLE DB "VFPOLEDB" не зарегистрирован.
А с 'MSDASQL' - все запросы зависают.
Я пробовал Visual FoxPro Driver сразу, ничего толкового не вышло, а вот с dBASE хотяб экспорт работает.
PS: Ставил VFPODBC.msi и VFPOLEDBSetup.msi
29 мар 10, 09:20    [8546236]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Забыл сказать - сервер х64
Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (Intel X86)   Mar 29 2009 10:27:29   Copyright (c) 1988-2008 Microsoft Corporation  Express Edition on Windows NT 6.1 <X64> (Build 7600: ) (WOW64) 
29 мар 10, 09:57    [8546376]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Glory
Member

Откуда:
Сообщений: 104751
Asteroidishe

PS: Ставил VFPODBC.msi и VFPOLEDBSetup.msi

Вы ставили их на сервер под учетной записью, которую использует mssql ?
29 мар 10, 09:59    [8546384]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
проходящий.
Guest
Asteroidishe
Забыл сказать - сервер х64
И очень зря забыл. Нет 64-битного VFP OLEDB провайдера. А кроме него фоксовые таблички врят ли что прочитает. Использование SSIS пакета в 32-битном режиме вроде как решает проблему.
29 мар 10, 10:00    [8546390]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
проходящий
Нет 64-битного VFP OLEDB провайдера. А кроме него фоксовые таблички врят ли что прочитает.

Да емае, грят вам dBASE читает.
Есть dBASE x64?
29 мар 10, 10:07    [8546438]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Glory
Вы ставили их на сервер под учетной записью, которую использует mssql ?

Запустил сервер от то учетки. Заработало FOX_ODBC.
Так, теперь лечим иероглифы %)
Ž€Ž"¥à¬.§ ¢®¤ ᨫ¨ª â.¯ ­¥«¥©
29 мар 10, 10:29    [8546574]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
С помощью этого сообщения
Импорт БД КЛАДР в таблицы MS SQL Server
добился следующего:
1) в Import and Export Data (32-bit) по DSN fxp снова починилась кодировка (фиг зхнает почему слетало...)
http://img59.imageshack.us/img59/4992/captureunn.jpg
2)
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft dBase Driver (*.dbf)};
DBQ= d:\tmp\foxu',
'SELECT * FROM AA.DBF') as dBase
Выводит ÎÀÎ"Ïåðì.çàâîä ñèëèêàò.ïàíåëåé
select *
from OPENQUERY(FOX_ODBC,
'select * from d:\tmp\foxu\AA.DBF' 
) a
Выводит Ž€Ž"¥à¬.§ ¢®¤ ᨫ¨ª â.¯ ­¥«¥©
select *
from OPENQUERY(FXP,
'select * from AA.DBF' 
) a
Выводит ÎÀÎ"Ïåðì.çàâîä ñèëèêàò.ïàíåëåé
select *
from OPENQUERY(FOX_OLEDB,
'select * from tmp\foxu\AA.DBF' 
) a
Читает названия колонок потом падает.
--Msg 7399, Level 16, State 1, Line 16
--Поставщик OLE DB "VFPOLEDB" для связанного сервера "FOX_OLEDB" сообщил об ошибке. Поставщик не предоставил данных об ошибке.
--Msg 7330, Level 16, State 2, Line 16
--Не удалось получить строку от поставщика OLE DB "VFPOLEDB" для связанного сервера "FOX_OLEDB".

/****** Object:  LinkedServer [FOX_ODBC]    Script Date: 03/29/2010 13:07:34 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'FOX_ODBC', @provider=N'MSDASQL', @provstr=N'Driver={Microsoft Visual FoxPro Driver}; 
UID=;SourceDB=d:\tmp\foxu\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Col
late=Russian;Null=No;Deleted=No'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'FOX_ODBC',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

GO

/****** Object:  LinkedServer [FOX_OLEDB]    Script Date: 03/29/2010 13:07:37 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'FOX_OLEDB', @provider=N'VFPOLEDB', @datasrc=N'd:\', @provstr=N'Collating Sequence=RUSSIAN'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'FOX_OLEDB',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

GO


/****** Object:  LinkedServer [FXP]    Script Date: 03/29/2010 13:07:39 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'FXP', @srvproduct=N'fxp', @provider=N'MSDASQL', @datasrc=N'fxp'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'FXP',@useself=N'False',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

GO
29 мар 10, 11:13    [8546898]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Идей нет по поводу как починить в OPENROWSET кодировку?
PS: Без правки BDE шных настроек тоже иероглифы, но не вида "neeeeao",а вида "Z€Z"
29 мар 10, 12:52    [8547596]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Обнаружил просто охрененную вещь.
Если до запуска виздарда Import and Export Data (32-bit) запустить bdeadmin.exe - кодировка ломается и в нем. Гребаный дос, борланд, совок (который не смог придумать себе нормальный стандарт кодировки и заставить всех ее юзать) и прочие кошерные вещи...
29 мар 10, 13:23    [8547834]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Все! Победил!
Итак, для полной и безоговорочной капитуляции фокспро нам понадобится:

1) Windows 7 x64 одна штука
2) MSSQL Express 2008 SP1 одна штука
3) Файлы фокспрошных таблиц в досовской кодировке - несколько штук
4) c:\Windows\SysWOW64\odbcad32.exe - одна штука
a) Вкладка Sytem DSN
b) Add -> Microsoft dBase Driver (*.dbf)}
c) Use current directory - снимаем галку, выбираем путь до наших файлов
d) Даем имя (fxp), жмем ок
5) c:\Program Files (x86)\Common Files\Borland Shared\BDE\bdeadmin.exe
a) Run as administrator (если uac включен)
b) Configuration -> Drivers -> Native (тут наверное надо только дбейс, но на всякий случай задал все)
I) PARADOX -> LANGDRIVER -> Paradox Cyrr 866
II) DBASE -> LANGDRIVER -> dBASE RUS cp866
III) FOXPRO -> LANGDRIVER -> dBASE RUS cp866
c) Configuration -> Sytem -> INIT -> LANGDRIVER -> Pdox ANSI Cyrillic
d) закрываем
6) Linked Servers -> New Linked Server
a) Provider -> Microsoft OLE DB Provider for ODBC Drivers
b) Prod&uct name -> fxp
c) Data source -> (fxp) имя dsn из пункта 4.d
d) Server Options -> Collation Name -> SQL_Latin1_General_CP1251_CI_AS
e) Даем имя (FXP), жмем ок
7) Пишем запрос select * from OPENQUERY(FXP, 'select * from AA.DBF') a
8) Радуемся русским буковкам
29 мар 10, 13:46    [8548012]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
Еще подскажите как переделать запрос
select * from OPENQUERY(FXP, 'select * from AA.DBF') a
на Four-Part Name
29 мар 10, 14:09    [8548155]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
проходящий.
Guest
Asteroidishe
Все! Победил!
Итак, для полной и безоговорочной капитуляции фокспро нам понадобится:
Вынужден поправить. Это победа не над foxpro, а над файлами dbf без специфических фокспрошных фичек. При наличии упомянутых фичек показанный номер не пройдет.
29 мар 10, 15:05    [8548587]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Asteroidishe
Member

Откуда: Пермь
Сообщений: 148
проходящий
Это победа не над foxpro, а над файлами dbf без специфических фокспрошных фичек

Афаик, там (в моем случае) досовская фокспра, "фичкам" там неоткуда взяться.
29 мар 10, 15:09    [8548616]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Foxpro linked server  [new]
EV.P
Member

Откуда:
Сообщений: 170
Asteroidishe,

У меня такой вариант не прокатил. Выдаётся ошибка MS SQL 7303. Что-то тут не так.
20 май 14, 15:10    [16043067]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9163
Ставите 32-битный SQL сервер, устанавливаете VFP OleDB провайдера, настраиваете линк, всё работает.
21 май 14, 11:24    [16046900]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
EV.P
Member

Откуда:
Сообщений: 170
Владислав Колосов,

Да, это решение. Но как быть с лицензией? Может быть можно поднять это всё на виртуалке?
Легче можно решить задачу?
21 май 14, 11:36    [16047016]     Ответить | Цитировать Сообщить модератору
 Re: Foxpro linked server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9163
Поставьте бесплатный Express Edition, например.
21 май 14, 11:49    [16047172]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить