レポートサーバーを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
は、私は次のエラー
にSQL Serverは、プロシージャへのアクセスコンポーネントの 'sys.sp_OACreate' 'をブロックされた116
メッセージ15281、レベル16、状態1、プロシージャsp_OACreate、ラインを取得しますこのコンポーネントはこのサーバーのセキュリティ構成の一部としてオフになっているため、「Ole Automation Procedures」と表示されます。システム管理者は、sp_configureを使用して 'Ole Automation Procedures'の使用を有効にすることができます。 'Ole Automation Procedures'を有効にする方法の詳細については、SQL Server Books Onlineの「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 Books Onlineの「Ole Automation Procedures」を検索してください。
このエラーは、多くの場合、アドホッククエリが十分ではないdistribtuedことを意味します。しかし、それらは(両方の '高度なオプションを表示する'と 'ad hoc distributed queries'は両方とも1に設定されています)。また、Microsoft.ACE.OLEDB.12.0プロバイダには、プロセスで許可と動的パラメータが有効になっています。
Excelファイルは2008 R2と完全に機能します。コード自体は変更されていません。変更されたすべてが2014年にアップグレードされています。誰にも提案はありますか?あなたは知っている...私たちはそれを変更するためのリソースがないので、ファイルをExcelに接続するためにSQLを使用していない。
多くの義務付け!
ありがとうございました!それはすぐにうまくいった。私はあなたにたくさんのトカゲを買うつもりです! – Pleiades