2013-12-09 33 views
0

我有一個查詢看起來是這樣的:無法通過SQL作業運行SQL查詢

select tb1.col1, tb1.col2, tb2.col4, tb2.col7 
from server_1.database_a.dbo.table_1 tbl1 
inner join server_2.database_c.dbo.table_2 tbl2 on tbl1.col_id = tbl2.col_id 

這個查詢運行正常(我不得不創建SQL Server上的鏈接,鏈接的2個服務器的該查詢工作)時,我從Microsoft SQL Server Management Studio手動執行它。但是,當我嘗試創建曾經執行此查詢每天的SQL作業,我收到以下錯誤消息,並且查詢不執行

作爲用戶執行:NT AUTHORITY \ SYSTEM。對象名稱 'server_1.database_a.dbo.table_1'包含超過最大數量的前綴 。最大值是2. [SQLSTATE 42000](錯誤117)。 該步驟失敗。

+0

3服務器版本是什麼?該錯誤被列爲對SQL 2012的重大更改。http://msdn.microsoft.com/en-us/library/ms143179.aspx – jean

+0

您正在使用3個服務器還是在server_1中運行作業?在這種情況下,只需刪除server_1.database_a前綴。 – jean

+0

這兩個服務器都基於Sql Server 2008 R2,是的,作業正在其中一臺服務器上運行,因此查詢基於2臺服務器。 – oshirowanen

回答

1

嘗試:在sysadmin服務器角色

use database_a; 
select tb1.col1, tb1.col2, tb2.col4, tb2.col7 
from dbo.table_1 tbl1 
inner join server_2.database_c.dbo.table_2 tbl2 on tbl1.col_id = tbl2.col_id 
0

server_1.database_1.dbo.table_1這與您先寫的不一樣。它的: server_1.database_a.dbo.table_1可能是這個原因。

+0

對不起,在我的實際腳本中是正確的,你發現的錯誤是一個錯誤的問題。我已經更正了現在問題中的腳本。感謝您的發現。 – oshirowanen

0
  1. 將NT AUTHORITY \ SYSTEM用戶。

  2. 將此用戶添加到帶有遠程用戶名和pwd 鏈接服務器登錄映射的鏈接服務器屬性的安全性選項卡中。