读书人

两台数据库服务器之间表中数据定时导入

发布时间: 2012-03-15 11:50:38 作者: rapoo

两台数据库服务器之间表中数据定时导入
两台数据库服务器之间表中数据定时导入:

1 生产主机GGJBHT 上的thdata表 定时 往备份机的thdata表中传入数据,用下列方式已创立好连接服务器

EXEC sp_addlinkedserver
@server='DBVIP',-- 被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.1.10' --要访问的服务器

EXEC sp_addlinkedsrvlogin
'DBVIP', -- 被访问的服务器别名
'false',
NULL,
'sa', --帐号
'010' --密码

生产机THDATA表中ID在备份机thdata中没有则就导入,
采取这种思路写入下列代码:

INSERT INTO thdata as a
SELECT * from DBVIP.GGJBHT.dbo.thdata as b
where b.ID > a.ID
运行不能通过,怎么写呢?

有别的方式可以实现吗?


[解决办法]

SQL code
INSERT INTO  a   SELECT b.* from thdata as a, DBVIP.GGJBHT.dbo.thdata as bwhere b.ID > a.ID
[解决办法]
SQL code
INSERT INTO  a   SELECT b.* from thdata as b, DBVIP.GGJBHT.dbo.thdata as awhere b.ID > a.ID
[解决办法]
探讨

报错,如下:
消息 208,级别 16,状态 1,第 1 行
对象名 'a' 无效。

[解决办法]
sql 2005以上的话 就用merge
merge需要定义目标表和源表 然后判断
如果目标表有 源表没有 如何如何 等等
具体可以网上搜索一下merge的语法
[解决办法]
INSERT INTO thdata /*你要插入的所在服务器上的数据库*/
SELECT b.* from thdata as b, DBVIP.GGJBHT.dbo.thdata as a
where b.ID > a.ID

[解决办法]
如果数据量小,能完成任务即可。。如果数据量大,要注意性能和技巧
[解决办法]
[color=#FF0000]
SQL code
INSERT INTO thdata   SELECT b.* from thdata as a, DBVIP.GGJBHT.dbo.thdata as bwhere b.ID > a.ID 

读书人网 >SQL Server

热点推荐