Как настроить файл Excel в качестве связанного сервера в SQL Server? - PullRequest
1 голос
/ 31 марта 2011

Я открыл диалоговое окно «Связанный сервер», чтобы создать связанный сервер, чтобы я мог импортировать данные из файла Excel в базу данных SQL Server 2005. Какой провайдер я должен использовать и какие другие настройки мне нужно заполнить?

Ответы [ 2 ]

1 голос
/ 11 февраля 2017

Для тех, кто использует SQL SERVER 2012+, вы можете использовать провайдер Microsoft OLEDB 12.0, который поставляется с SQL Server 2012+ и который позволяет использовать файлы Excel 2007-2013 xlsx для распределенных запросов adhoc или в качестве связанного сервера. Примеры ниже.

Книга Excel «Application.xlsx» содержит 3 листа: «Приложение», «Устройство», «Пользователь». Сначала активируйте специальные запросы на сервере.

USE MSDB
GO
sp_configure 'show advanced options', 1
GO
RECONFIGURE WITH OverRide
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE WITH OverRide
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO

EXEC master . dbo. sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1

Для специальных запросов используйте функцию OPENROWSET.

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel   8.0;Database=C:\Users\Administrator\Desktop\Application.xlsx;HDR=YES', 'SELECT * FROM [Application$]');

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel   8.0;Database=C:\Users\Administrator\Desktop\Application.xlsx;HDR=YES', 'SELECT * FROM [Device$]');

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel  8.0;Database=C:\Users\Administrator\Desktop\Application.xlsx;HDR=YES', 'SELECT * FROM [User$]');

Для создания связанного сервера в формате Excel 2007-2013:

USE MSDB
GO
EXEC sp_addLinkedServer
@server= 'XLSX_MATRIX',
@srvproduct = 'ACE 12.0',
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = 'C:\Users\Administrator\Desktop\Application.xlsx',
@provstr = 'Excel 12.0; HDR=Yes'

Теперь запросите файл Excel двумя способами:

SELECT * FROM OPENQUERY (XLSX_MATRIX, 'Select * from [Application$]')
SELECT * FROM OPENQUERY (XLSX_MATRIX, 'Select * from [Device$]')
SELECT * FROM OPENQUERY (XLSX_MATRIX, 'Select * from [User$]')

SELECT * FROM XLSX_MATRIX...[Application$]
SELECT * FROM XLSX_MATRIX...[Device$]
SELECT * FROM XLSX_MATRIX...[User$]
1 голос
/ 31 марта 2011

Вы должны настроить его с помощью поставщика OLEDB или поставщика драйверов ODBC и создать подключение с помощью инструмента администратора ODBC на сервере к файлу Excel.Планируете ли вы читать из этого файла Excel на регулярной основе?Если нет, то установка его в качестве связанного сервера может быть излишней.

Для получения дополнительной информации см. « Как импортировать данные из Excel в SQL Server » и « Какиспользовать Excel со связанными серверами SQL Server и распределенными запросами"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...