这两天需要用sql同步,在网上找了些资料,我自己的做法如下,记录下来
1.在分发的数据库上建一个超级管理员帐员
2.在服务里把sqlagent的启动设成这个超管用户来启动
2.1在硬盘上建一个目录,超管有这个目录的写权限,由于是推模式不用建共享,拉模式得建共享
3.把sql注册改一下,localhost,.的这样不行,要建成机器名的,把从库的数据库在主库这注册一下
4.把被删除的危险存府过程恢复一下
恢复危险存储过程
sp_addextendedproc 'xp_regread',@dllname ='xpstar.dll'
go
sp_addextendedproc 'xp_regwrite',@dllname ='xpstar.dll'
go
sp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll'
go
sp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll'
go
sp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll'
go
sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
5.打开数据库选择工具-复制-配置
6.在指定的数据库上,选工具-复制-创建和发布,选择相关的表,(快照适合数据量较小,不总变的情况,事务适合变动较我,合并适合两库更新同时更新)我选事务模式
7.在复制监视器上新生成的内容上右键-建立强制定阅
如果是快照复制会了来两个项目 分别设置自动时间设置成几分钟一次,
如果是事务复制会出来三个项目 把快照设置成几分钟一次,日志和那个默认代理自动启动
对了在设置复制后在没有禁用发布的情况下,绝对不能用其他备分还原主数据库,会出错误,我最后重装的sql解决的
对发布后的表进行修改可选择发布的荐-选择项目-未发布的项目勾上后即可
最后把危险进程删除
use master
EXEC sp_dropextendedproc 'xp_cmdshell'
EXEC sp_dropextendedproc 'Sp_OACreate'
EXEC sp_dropextendedproc 'Sp_OADestroy'
EXEC sp_dropextendedproc 'Sp_OAGetErrorInfo'
EXEC sp_dropextendedproc 'Sp_OAGetProperty'
EXEC sp_dropextendedproc 'Sp_OAMethod'
EXEC sp_dropextendedproc 'Sp_OASetProperty'
EXEC sp_dropextendedproc 'Sp_OAStop'
EXEC sp_dropextendedproc 'Xp_regaddmultistring'
EXEC sp_dropextendedproc 'Xp_regdeletekey'
EXEC sp_dropextendedproc 'Xp_regdeletevalue'
EXEC sp_dropextendedproc 'Xp_regenumvalues'
EXEC sp_dropextendedproc 'Xp_regread'
EXEC sp_dropextendedproc 'Xp_regremovemultistring'
EXEC sp_dropextendedproc 'Xp_regwrite'
drop procedure sp_makewebtask