2011-10-18 1 views
2

procがopenrowset関数を使用してファイルを読み取り、bcpコマンドを使用してファイルをエクスポートするジョブ。最近まで完全に動作していました。私はそれが私にこのエラーを与えるジョブを実行する場合: -このエラーを解決する方法SQlサーバーエージェントジョブを実行しているときに表示されますか?

NT AUTHORITY\LOCAL SERVICE. Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)". [SQLSTATE 42000] (Error 7303) Configuration option 'show advanced options' changed from 1 to 1. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Error 15457) Configuration option 'Ad Hoc Distributed Queries' changed from 1 to 1. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Error 15457) OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Unspecified error". [SQLSTATE 01000] (Error 7412). The step failed.

ここでプロシージャのコードを格納している: - 事前に

ALTER PROCEDURE [dbo].[Read_Excel] 
    @ExcelFilePath varchar(500) 
    ,@OutPutFilePath nvarchar(500) 
    ,@ServerName nvarchar(500) 
    ,@DatabaseName nvarchar(100) 
    ,@UserName nvarchar(50) 
    ,@Password nvarchar(50) 
    ,@Delimiter char(1) 
AS 
BEGIN 
    SET NOCOUNT ON; 
    DECLARE @Query nvarchar(1000) 
    DECLARE @Cmd varchar(1000) 
    DECLARE @FileExists int 

    -- Check File Existence 
    EXEC master..xp_fileexist @ExcelFilePath, @FileExists OUTPUT --returns 1 if exists, 0 if file is not there 
    if @FileExists <> 1 
     BEGIN PRINT 'There is no excel file available: ' + @ExcelFilePath RETURN END 

    -- Allow Ad hoc Distributed Queries in order to run OpenRowset Function 
    EXEC SP_CONFIGURE 'show advanced options', 1 
    RECONFIGURE 
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries', 1 
    RECONFIGURE 

    -- Clear tbl_excel Table 
    TRUNCATE TABLE tbl_Excel 
    --Read EXCEL File using OPENROWSET Function 
    SET @Cmd = 'INSERT INTO tbl_Excel 
       SELECT * FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', ''Excel 8.0;HDR=YES;IMEX=1;Database=' + @ExcelFilePath + ''', 
       ''SELECT * FROM [Sheet1$]'')' 
    EXEC(@Cmd) 
    -- Allow Ad hoc Distributed Queries in order to run OpenRowset Function 
    EXEC SP_CONFIGURE 'show advanced options', 1 
    RECONFIGURE 
    EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries', 0 
    RECONFIGURE 

    --Query View 
    SET @Query = 'SELECT id1, name1, name2, address1, address2 FROM [' + @DatabaseName + '].[dbo].[tbl_Excel]' 
    SET @Cmd = 'bcp "' + @Query + '" queryout "' + @OutPutFilePath + 
       '" -c -S' + @ServerName + ' -U' + @UserName + ' -P' + 
       @Password + ' -t' + @Delimiter + '' 
    EXEC master..xp_cmdshell @Cmd 
END 

感謝を。

+0

が私に見える使用しないようにしよう - または、リンクされたサーバがリンクされなくなりました? – Widor

+0

Widor、procを調べて、手がかりがあれば – User13839404

+3

Holly Crap。私は、SQL ServerエージェントサービスアカウントをlocalserviceからNetworkServiceに変更しました。そしてそれは働いた。 – User13839404

答えて

0

SQL Serverエージェントのログオンを変更しようとしましたか? (サービス - > SQL Serverエージェント、ログオンを右クリックしてください)をあなたのユーザアカウントに送りますか? またはその代わりにJETを使用して、あなたがいずれかの動的リンクサーバー名を移入して、ND PROCに渡すことに失敗しているようにACE

SET @Cmd = 'INSERT INTO tbl_Excel 
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;HDR=YES;IMEX=1; 'Database=' + @ExcelFilePath + ', 'SELECT * FROM [Sheet1$]')' 
関連する問題