2010-05-07 52 views
2

在SQL Server 2005中的表名,可以用來區分你指的是哪個表:如何在SQL Server 2000中更新需要「別名」的鏈接服務器表?

UPDATE LinkedServer.database.user.tablename 
SET val=u.val 
FROM localtable u 
WHERE tablename.ID=u.ID 

在SQL Server 2000這會導致

服務器:消息107,級別16,狀態2
列前綴'tablename'與查詢中使用的表名或別名不匹配。

試圖

UPDATE LinkedServer.database.user.tablename 
SET val=u.val 
FROM localtable u 
WHERE LinkedServer.database.user.tablename.ID=u.ID 

結果

服務器:消息117,級別15,狀態2
數名「LinkedServer.database.user.tablename]包含了更多的最大數量的前綴。最大爲3

,當然,

UPDATE LinkedServer.database.user.tablename 
SET val=u.val 
FROM localtable u 
WHERE ID=u.ID 

結果

服務器:消息209,級別16,狀態1
不明確的列名 'ID'。

(事實上,在「數字名稱包含超過最大數量的前綴數目,最大值是3」。我找到了答案,但我已經鍵入了這個問題,我要發佈它:-))

回答

6

怎麼樣!

UPDATE ls 
SET ls.val=u.val 
FROM LinkedServer.database.user.tablename ls 
    JOIN localtable u ON ls.ID = u.ID 
+0

是的,這就是我在這裏找到的http://www.sqlservercentral.com/Forums/Topic171651-9-1.aspx – 2010-05-07 10:34:32

-2

是的,它的工作的罰款。

我已經使用了這個。你可以試試..

select * from [FIRSTLINK].job.dbo.student 

select * from openquery ([FIRSTLINK],'exec job.dbo.sp1') 

select * from openquery ([FIRSTLINK],'insert into student values (5,'mohit','uttam nagar','New delhi')job.dbo.sp1') 

INSERT INTO firstlink.job.dbo.student VALUES (6,'Public Relations', 'Executive General and Administration','delhi'); 

INSERT OPENQUERY (firstlink, 'SELECT * FROM job.dbo.student') VALUES (9,'prabhakar','Environmental Impact', 'Engineering'); 

UPDATE firstlink.job.dbo.student SET student.name='rousan' WHERE student.ID=4 

我有通過使用SQL鏈接服務器插入,更新和選擇。

+0

請使用代碼標籤! – gsamaras 2015-01-10 20:14:36

+0

不回答問題。我的問題是'JOIN'。 – 2015-01-11 23:14:42