sql >> Databasteknik >  >> RDS >> Sqlserver

Hur konfigurerar jag en Excel-fil som en länkad server i SQL Server?

För de som använder SQL SERVER 2012+ kan du använda Microsoft OLEDB 12.0 Provider som följer med SQL Server 2012+ och som låter dig använda Excel 2007-2013 xlsx-filer för adhoc-distribuerade frågor eller som en länkad server. Exempel nedan.

Excel-arbetsboken "Application.xlsx" har 3 kalkylblad Application, Device, UserFirst Activate Ad Hoc Queries på servern.

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

Använd OPENROWSET-funktionen för ad hoc-frågor.

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$]');

För att skapa en länkad server för Excel 2007-2013-format:

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'

Fråga nu din excel-fil på två sätt:

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. Fixar ett skadat TOAST-bord

  2. Duplicerar poster för att fylla gapet mellan datum

  3. Är det möjligt att använda användardefinierade aggregat (clr) med fönsterfunktioner (över)?

  4. Hur kan man välja alla poster utom de tre första posterna?