SQLSERVER大量数据同步问题失败!在线等!谢谢!

asprobin 2009-11-10 12:02:29
想在两台服务器之间同步数据,A表中的数据量非常的大,大概有5W条左右,每天计划定时同步两次。

我用“发布-订阅-快照” 同步失败(可能是数据量太大的原因)

想请教下大家,怎么控制同步数据的数量呢 (我想只同步A表中最近更新的1000条数据)

用什么方案比较好 或者 在哪设置呢

谢谢!
...全文
227 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2009-11-10
  • 打赏
  • 举报
回复
---用链接服务器+JOB
/*不同服务器数据库之间的数据操作*/

--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '

--查询示例
select * from ITSV.数据库名.dbo.表名

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '

--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset

--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表

--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
dawugui 2009-11-10
  • 打赏
  • 举报
回复
既然是同步,就是时时更新.不存在你说的:只同步A表中最近更新的1000条数据.

如果是:只同步A表中最近更新的1000条数据,可以考虑使用定时作业,因为你不是时时更新了.
定时作业的制定

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名 ... --该存储过程用于创建表

--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.


asprobin 2009-11-10
  • 打赏
  • 举报
回复
自己顶一下
asprobin 2009-11-10
  • 打赏
  • 举报
回复
同步差不多5W条数据
错误提示:
----------------------------------------

代理程序处于置疑状态。在最近10分钟内没有响应

-----------------------------------------

请问下怎么回事呢 ?
Q315054403 2009-11-10
  • 打赏
  • 举报
回复
有偿支持
xuejie09242 2009-11-10
  • 打赏
  • 举报
回复
可以同步的。和数据量无关。
asprobin 2009-11-10
  • 打赏
  • 举报
回复
但是我同步失败,几百条数据实验可以同步,数据多了就要出错
SQL77 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 asprobin 的回复:]
请问 用 发布-订阅-快照 不能同步5W条这样的打数据吗?
[/Quote]
没有这样的限制吧,
asprobin 2009-11-10
  • 打赏
  • 举报
回复
请问 用 发布-订阅-快照 不能同步5W条这样的打数据吗?
xman_78tom 2009-11-10
  • 打赏
  • 举报
回复
可以使用事务复制或合并复制,这两种复制在完成初始化后,只会同步发布表中更改的部分。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧