2010-05-07 38 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