2012-04-05 54 views
1

我一直在嘗試讀取一臺服務器上的表並寫入到我的硬盤驅動器上的另一個現有表(本地...使用SQL Server Express創建)。跨服務器SQL查詢從一個表(共享)讀取並寫入到另一個(本地)

這裏是我的代碼:

insert into [DPS-ABC1DE2\SQLEXPRESS].my_LOCAL_DATABASE.dbo.SHIPMENTS 
select 
    CUST_NUMBER, 
    SHIPMENT_ID, 
    SHIP_DATE, 
    MODE_CODE, 
    MILES, 
    WEIGHT, 
    AMOUNT_PAID 
from SHARED_DATABASE.dbo.SHIPMENTS 
where datepart(year,SHIP_DATE)= 2012 and datepart(month,SHIP_DATE) = 1 

我收到以下錯誤消息,當我運行此:

Msg 7202, Level 11, State 2, Line 7
Could not find server 'DPS-ABC1DE2\SQLEXPRESS' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

所以我用

EXEC sp_addlinkedserver [DPS-ABC1DE2\SQLEXPRESS] 

嘗試,但我得到這個錯誤:

"Msg 15247, Level 16, State 1, Procedure sp_MSaddserver_internal, Line 29
User does not have permission to perform this action."

我是一名菜鳥SQL程序員,所以我不得不廣泛研究這個,但沒有成功。任何幫助,將不勝感激!

+1

「用戶沒有執行此操作的」權限 - 您沒有足夠的權限,就這麼簡單 – 2012-04-05 14:05:23

+0

僅供參考,跨服務器查詢可以是[恕我直言]非常難以持續工作,它絕對是一個先進的科目,至少只要你認爲自己是一個新手,你應該警惕的。 – 2012-04-05 14:10:54

回答

1

sp_addlinkedserver執行權限默認授予sysadmin和setupadmin固定服務器角色的成員。看看這link如何整理出sql server 2005

一旦你擺脫了這個問題,你可以使用以下鏈接並登錄到其他服務器。

--add the linked server and then login 
EXEC sp_addlinkedserver 'DPS-ABC1DE2\SQLEXPRESS',N'SQL Server'; 

EXEC sp_addlinkedsrvlogin @rmtsrvname='DPS-ABC1DE2\SQLEXPRESS', 
     @useself='false', 
     @rmtuser='login_username', 
     @rmtpassword='login_password' 

--do your job here      
Insert into [DPS-ABC1DE2\SQLEXPRESS].my_LOCAL_DATABASE.dbo.SHIPMENTS 
Select... 

--drop the linked server login and then drop the server 
EXEC sp_droplinkedsrvlogin 'DPS-ABC1DE2\SQLEXPRESS', NULL 
EXEC sp_dropserver 'DPS-ABC1DE2\SQLEXPRESS', NULL; 

希望這有助於...

相關問題