Добрый день! тема избитая, но все равно не получается запустить хотябы чтение из excel MSSQL x64.
Исходные данные:
1.Версия
select @@Version
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)
2.Зарегестированные драйверы для работы с офисом
EXEC sp_enum_oledb_providers
Microsoft.ACE.OLEDB.12.0
3. Excel файл "MySheet3.xls" (создан в 2003) с одним единственным листом "Range". (на самом сервере excel не установлен).
Что делаю:
1. Даём разрешение для драйвера
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
2. включаем xp_cmdshell
begin
EXEC sp_configure 'xp_cmdshell',1
reconfigure with override;
end
3. Создаём прилинкованный сервер:
EXEC master.dbo.sp_addlinkedserver
@server = N'LS_EXCEL',
@srvproduct=N'ms ace 12',
@provider=N'Microsoft.ACE.OLEDB.12.0',
@datasrc=N'c:\data\MySheet3.xls',
@provstr=N'Excel 12.0;'
4. В свойствах Linked Server в графе безопасность ставлю "Устанавливать без контекста безопасности"
5. Проверяю через Management Studio->Server Objects->Linked Server->Test Connection есть ли связь с созданным сервером,
пишет: "Выполнено успшно".
6. Проверяем доступность файла:
exec master..xp_cmdshell 'dir c:\data\MySheet3.xls'
резултат (доступность есть):
- Volume in drive C is system
- Volume Serial Number is 4406-D1E3
- NULL
- Directory of c:\data
- NULL
- 02/15/2013 08:49 PM 13,824 MySheet3.xls
- 1 File(s) 13,824 bytes
- 0 Dir(s) 16,385,438,720 bytes free
- NULL
7. Пробуем считать данные:
SELECT * FROM [LS_EXCEL]...[Range]
результат (ортиацательный):
"Msg 7314, Level 16, State 1, Line 1
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "LS_EXCEL" не содержит таблицы "Range". Таблица либо не существует, либо текущий пользователь не имеет разрешения на доступ к ней."
8. В ексель файл вставляю поименованный диапазон с таким же названием как и лист: Range
9. Перелинковываю заново сервер, проверяю связь и доступность все ок, пробуюу считать данные, результат другой:
Во вкладке результаты появляются заголовки столбцов 1,11,12,13 и все, данных нет, и следующие сообщения:
"Msg 7399, Level 16, State 1, Line 1
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "LS_EXCEL" сообщил об ошибке. Отказано в доступе.
Msg 7301, Level 16, State 2, Line 1
Не удалось получить требуемый интерфейс ("IID_IDBCreateCommand") от поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "LS_EXCEL"."при сипользовании
OPENDATASOURCE все один в один как и выше, в том числе с диапазоном:
select*
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
'Data Source=c:\data\MySheet3.xls;Extended Properties=EXCEL 12.0')...[Range] ;
Что сделано не так?