У меня есть файл Excel 2007, содержащий около 301808 строк и 2 столбца. Я пытался использовать SSIS для импорта, но не могу использовать Excel excel. Затем я решил попробовать создать связанный сервер на SQL Server, следуя инструкциям:Импорт файла Excel 2007 с использованием SQL Server 2005
- В SQL Server Management Studio разверните объекты сервера в обозревателе объектов.
- Щелкните правой кнопкой мыши Связанные серверы и выберите Новый связанный сервер.
- На левой панели выберите страницу «Общие», а затем выполните следующие действия:
- В первом текстовом поле введите имя связанного сервера.
- Выберите параметр «Другой источник данных».
- В списке «Поставщик» выберите Поставщик OLE DB Microsoft Jet 4.0.
- В поле Имя продукта введите Excel для имени источника данных OLE DB.
- В поле «Источник данных» введите полный путь и имя файла Excel.
- В поле Строка провайдера введите Excel 8.0 для Excel 2002, Excel 2000 или Excel 97 - книгу.
- Нажмите «ОК», чтобы создать новый связанный сервер.
Отсюда: http://support.microsoft.com/kb/306397/EN-US
Однако инструкция распространяется только предыдущие первенствовать файлы не 2007, так что я посмотрел строки подключения на 2007 год и использовал Excel 12.0 вместо Excel 8.0 в настройках связанного сервера:
- Поставщик: Microsoft Office Access 12.0 Database Engine OLE DB
- Имя поставщика продукта: источник данных Excel: C: \ Documents и
- Setti NGS \ UserName \ Desktop \ Main \ FilesIns \ MyExcelFile.xlsx Provider
- Строка: Excel 12,0
- Расположение:
- Каталог:
Затем я получил эту ошибку:
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "EXCEL_MY_FILE" does not contain the table "Report 1$". The table either does not exist or the current user does not have permissions on that table.
Я пошел в систему безопасности и добавил nt authority \ system на всякий случай, если это проблема с разрешениями, и это все равно дало мне ошибку выше.
Таблица Excel называется «Отчет 1».
Я также попытался с помощью OPENROWSET в SQL, чтобы посмотреть, что случилось, и я получил это:
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server.
Затем я попробовал код в ссылку ниже, чтобы увидеть, если это помогло мне использовать OPENROWSET:
How to enable Ad Hoc Distributed Queries
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
И получил:
OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "Syntax error in FROM clause.". Msg 7321, Level 16, State 2, Line 1 An error occurred while preparing the query "Select * from C:\Documents and Settings\UserName\Desktop\Main\FilesIns\MyExcelFile.xlsx" for execution against OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
Так что я не уверен, правильны ли значения в моей инструкции openrowset.
Действительно просто ищет способ импортировать этот файл в таблицу sql без использования SSIS - я все равно не могу его использовать.
Благодаря
Эндрю