2017-04-27 199 views
0

我正在運行SQL Server 2012,並且已經設置了一個SQL Server代理作業,它將基本上在數據庫上運行SQL查詢並將輸出導出到Excel文件(帶有xlsx擴展名)。如何解決此SQL Server代理作業錯誤消息?

當我在'作業屬性'窗口中解析'查詢'來測試我的查詢是否運行正常時,我得到'命令被成功解析!'的消息。

但是,當我檢查計劃作業的結果時,它顯示出它已失敗。錯誤日誌提供了以下詳細信息:

鏈接服務器「(null)」的OLE DB提供程序「Microsoft.ACE.OLEDB.12.0」無法INSERT INTO表「[Microsoft.ACE.OLEDB.12.0]」。 [SQLSTATE 42000](錯誤7343)OLE DB提供程序「Microsoft.ACE.OLEDB.12.0」用於鏈接服務器「(null)」返回消息「多步OLE DB操作生成錯誤。檢查每個OLE DB狀態值是否可用。工作完成了。「 [SQLSTATE 01000](錯誤7412)鏈接服務器的OLE DB提供程序「Microsoft.ACE.OLEDB.12.0」「(null)」返回消息「沒有當前記錄」。

我的SQL查詢的內容如下:

INSERT INTO OPENDATASOURCE (
    'Microsoft.ACE.OLEDB.12.0', 
'Data Source=c:\test\myfile2.xlsx;Extended Properties=Excel 12.0 Xml')...[Sheet1$] 

SELECT TOP 100 ReservationStayID,NameTitle,FirstName,LastName,ArrivalDate,DepartureDate FROM [GuestNameInfo] 

我已經創建的文件C「myfile2.xlsx」:\ test文件夾和Excel文件包含來自SQL查詢的列名上面的列標題。我期待SQL作業用SQL查詢的輸出填充Excel表格。

對這個問題的任何幫助或任何關於我是否在這裏做錯了什麼的指針將不勝感激。

+0

可能權限... –

+0

您是否嘗試過在一個查詢窗口運行查詢(而不是在代理)?您是否檢查過安裝的驅動程序是否正確(32 vs 64位,正確的Office版本等)。您是否檢查過SQL Server代理的用戶是否有足夠的權限寫入您想要的路徑? – Pred

+0

@Pred (1)驅動程序已被檢查並確定。 (2)在SSMS中運行查詢會給我以下錯誤消息:對於鏈接服務器「(null)」的OLE DB提供程序「Microsoft.ACE.OLEDB.12.0」無法INSERT INTO table「[Microsoft.ACE.OLEDB。 12.0]」。 (3)如何檢查SQL Server代理是否有足夠的權限寫入路徑? – user3115933

回答

0

SQL/Server會查看它的本地c:\ test。因此,如果您的PC上的C:驅動器上有該文件,並且您沒有在本地運行SQL/Server,則SQL/Server將無法在您的c:驅動器上找到該文件。

另外..「Insert into OpenDataSource 「不是有效的SQL。試試...

Select * Into GuestNameInfo 
    From OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0', 
         'Data Source=\\ServerName\Directory\Test.xlsx;Extended Properties=Excel 12.0 Xml')...[Sheet1$] 

或者你可以使用一個臨時表...

If Object_Id('TempDB..#GuestNameInfo') Is Not Null Drop Table #GuestNameInfo; 

Select * Into #GuestNameInfo 
    From OPENDATASOURCE ('Microsoft.ACE.OLEDB.12.0', 
         'Data Source=\\ServerName\Directory\Test.xlsx;Extended Properties=Excel 12.0 Xml')...[Sheet1$]; 

Select * From #GuestNameInfo; 
Drop Table #GuestNameInfo;