我正在將報表服務器從2008 R2 32位升級到2014 32位。SQL Server 2014 - 鏈接Excel文件上的錯誤15281
我們鏈接了excel文件的服務器。這些是.xls文件(儘管問題在更新到.xlsm時仍然存在)。連接工作正常(選擇&插入);但是,當我們運行存儲過程在Excel文件中創建新選項卡時。
USE [SupplementaryReports]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spExecute_ADODB_SQL]
@DDL VARCHAR(8000),
@DataSource VARCHAR(500),
@Worksheet VARCHAR(200)=NULL,
@ConnectionString VARCHAR(255) = 'Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=%DataSource;
Extended Properties=Excel 12.0'
AS
DECLARE
@objExcel INT,
@hr INT,
@command VARCHAR(255),
@strErrorMessage VARCHAR(255),
@objErrorObject INT,
@objConnection INT,
@bucket INT
SELECT @ConnectionString =REPLACE (@ConnectionString, '%DataSource', @DataSource)
IF @Worksheet IS NOT NULL
SELECT @DDL=REPLACE(@DDL,'%worksheet',@Worksheet)
SELECT @strErrorMessage='Making ADODB connection ',
@objErrorObject=NULL
EXEC @hr=sp_OACreate 'ADODB.Connection', @objconnection OUT
IF @hr=0
SELECT @strErrorMessage='Assigning ConnectionString property "'
+ @ConnectionString + '"',
@[email protected]
IF @hr=0 EXEC @hr=sp_OASetProperty @objconnection, 'ConnectionString', @ConnectionString
IF @hr=0 SELECT @strErrorMessage ='Opening Connection to XLS, for file Create or Append'
IF @hr=0 EXEC @hr=sp_OAMethod @objconnection, 'Open'
IF @hr=0 SELECT @strErrorMessage ='Executing DDL "'[email protected]+'"'
IF @hr=0 EXEC @hr=sp_OAMethod @objconnection, 'Execute',
@Bucket out , @DDL
IF @hr<>0
BEGIN
DECLARE
@Source VARCHAR(255),
@Description VARCHAR(255),
@Helpfile VARCHAR(255),
@HelpID INT
EXECUTE sp_OAGetErrorInfo @objErrorObject, @source output,
@Description output,@Helpfile output,@HelpID output
SELECT @strErrorMessage='Error whilst '
+COALESCE(@strErrorMessage,'doing something')+', '
+COALESCE(@Description,'')
RAISERROR (@strErrorMessage,16,1)
END
EXEC @hr=sp_OADestroy @objconnection
GO
我收到以下錯誤
消息15281,級別16,狀態1,由sp_OACreate過程,線116
SQL Server阻止訪問程序的組件 'sys.sp_OACreate''奧萊自動化程序「,因爲這個組件被關閉,作爲這個服務器的安全配置的一部分。系統管理員可以使用sp_configure啓用'Ole Automation Procedures'。有關啓用'Ole Automation Procedures'的更多信息,請在SQL Server聯機叢書中搜索'Ole Automation Procedures'。
消息15281,級別16,狀態1,過程sp_OADestroy的,線116
SQL Server阻止訪問過程部件「OLE自動化過程」的「sys.sp_OADestroy」,因爲該組件被關閉爲一體的部此服務器的安全配置。系統管理員可以使用sp_configure啓用'Ole Automation Procedures'。有關啓用'Ole Automation Procedures'的更多信息,請在SQL Server聯機叢書中搜索'Ole Automation Procedures'。
這個錯誤通常意味着特設的分佈式查詢是不夠的。但他們(都'顯示高級選項'和'特設分佈式查詢'設置爲1)。我們還有提供程序Microsoft.ACE.OLEDB.12.0,並允許啓用進程和動態參數。
excel文件與2008 R2完美配合。代碼本身沒有改變。所有改變都升級到2014年。有沒有人有任何建議?你知道......除了沒有使用SQL來連接到excel文件,因爲我們沒有資源來改變它。
非常感謝!
謝謝!這工作很快。我要給你買這麼多蜥蜴! – Pleiades