查询链接服务器信息,如何通过 SQL Server 链接服务器和分布式查询使用 Excel
作為鏈接服務器查詢 Excel
您可以使用企業管理器、系統存儲過程或 SQL-DMO(分布式管理對象)將 Excel 數據源配置為 SQL Server 鏈接服務器。在所有的這些情況中,您總需要設置以下四個屬性:
鏈接服務器要使用的名稱。
連接要使用的 OLE DB 提供程序。
Excel 工作簿的數據源或完整路徑和文件名。
將目標標識為 Excel 工作簿的提供程序字符串。默認情況下,Jet 提供程序需要 Access 數據庫。
系統存儲過程 sp_addlinkedserver 也需要 @srvproduct 屬性,該屬性可以是任何字符串值。
使用企業管理器配置 Excel 鏈接服務器
在企業管理器中,單擊以展開安全文件夾。
右鍵單擊鏈接服務器,然后單擊新建鏈接服務器。
在常規選項卡上,按照下列步驟操作:
在第一個文本框中,為該鏈接服務器鍵入任意名稱。
在服務器類型文本框中,單擊其他數據源。
在提供程序名稱下拉列表框中,單擊 Microsoft Jet 4.0 OLE DB 提供程序。
在數據源文本框中,鍵入 Excel 文件的完整路徑和文件名。
在提供程序字符串文本框中,鍵入 Excel 8.0 代表 Excel 97、2000 或 2002 工作簿。
單擊確定以創建新的鏈接服務器。
單擊以展開此新鏈接服務器的名稱,從而展開它所包含的對象列表。
在新建鏈接服務器名稱下,單擊表。注意,工作表和命名區域將出現在右窗格中。
使用存儲過程配置 Excel 鏈接服務器
您還可以使用系統存儲過程 sp_addlinkedserver 將 Excel 數據源配置為鏈接服務器:
DECLARE @RC int
DECLARE @server nvarchar(128)
DECLARE @srvproduct nvarchar(128)
DECLARE @provider nvarchar(128)
DECLARE @datasrc nvarchar(4000)
DECLARE @location nvarchar(4000)
DECLARE @provstr nvarchar(4000)
DECLARE @catalog nvarchar(128)
-- Set parameter values
SET @server = 'XLTEST_SP'
SET @srvproduct = 'Excel'
SET @provider = 'Microsoft.Jet.OLEDB.4.0'
SET @datasrc = 'c:\book1.xls'
SET @provstr = 'Excel 8.0'
EXEC @RC = [master].[dbo].[sp_addlinkedserver] @server, @srvproduct, @provider,
@datasrc, @location, @provstr, @catalog
如上所述,此存儲過程另需一個任意字符串值作為 @srvproduct 參數的值,此參數在企業管理器配置中顯示為“產品名稱”。不使用 @location 和 @catalog 參數。
使用 SQL-DMO 配置 Excel 鏈接服務器
您可以使用 SQL 分布式管理對象從 Microsoft Visual Basic 或其他編程語言中將一個 Excel 數據源以編程方式配置為鏈接服務器。您必須也提供企業管理器配置中要求的那四個參數。
Private Sub Command1_Click()
Dim s As SQLDMO.SQLServer
Dim ls As SQLDMO.LinkedServer
Set s = New SQLDMO.SQLServer
s.Connect "(local)", "sa", "password"
Set ls = New SQLDMO.LinkedServer
With ls
.Name = "XLTEST_DMO"
.ProviderName = "Microsoft.Jet.OLEDB.4.0"
.DataSource = "c:\book1.xls"
.ProviderString = "Excel 8.0"
End With
s.LinkedServers.Add ls
s.Close
End Sub
查詢 Excel 鏈接服務器
將 Excel 數據源配置為鏈接服務器之后,您可以方便地通過“查詢分析器”或其他客戶端應用程序查詢其數據。例如,為了檢索存儲在 Excel 文件 Sheet1 中的數據行,以下代碼使用了您使用 SQL-DMO 配置的鏈接服務器:
SELECT * FROM XLTEST_DMO...Sheet1$
您還可以使用 OPENQUERY 以“passthrough”(傳遞)方式查詢 Excel 鏈接服務器,如下所示:
SELECT * FROM OPENQUERY(XLTEST_DMO, 'SELECT * FROM [Sheet1$]')
OPENQUERY 需要的第一個參數是鏈接服務器名稱。工作表名稱之間需要用分隔符分開,如上所示。
您還可以使用以下查詢獲得 Excel 鏈接服務器上所有可用表的列表:
EXECUTE SP_TABLES_EX 'XLTEST_DMO'
總結
以上是生活随笔為你收集整理的查询链接服务器信息,如何通过 SQL Server 链接服务器和分布式查询使用 Excel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis linux 运行依赖,在Ub
- 下一篇: mysql 占用的解决_解决 MySQL