解决问题:在数据库开发时,只需要针对数据库中的部分表需要异地同步的解决方法

第一种方案:
前提:一方使用VPN连接另一方网络
1.在本地数据库建立包用于数据导入
提示:可以使用SQL Server代理服务实现自动导入
缺点:需要考虑网络速度,考虑数据传输丢包的问题

第二种方案:
1.在源机器上备份源数据库
2.将数据传送到目标机器
3.在目标机器上还原数据库为一个新的数据库
4.利用数据库导入的方法将需要导入的数据导入目标数据
提示:使用DTS时,可以对操作保存为包,方便以后使用
缺点:考虑数据传输的问题

第三种方案:
1.查看数据库表的关系
2.在源机器上根据表的关系使用bcp命令导出数据
3.在目标机器上根据表的关系使用sql命令删除数据
4.在目标机器上根据表的关系使用bcp导入数据
提示:可以建立脚本来实现导入、导出数据的功能
缺点:表结构更新时,需要手动,需要考虑是否有漏掉的表,此方案没有对二进制数据进行测试

SQL Server2000还可提供了复制发布、订阅的方法实现同步,感觉太复杂,以后有机会研究。

参考命令:

存储过程:
/** 导入文本文件
EXEC master..xp_cmdshell 'bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword'
/** 导出文本文件
EXEC master..xp_cmdshell 'bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword'

命令行:
/** 导入文本文件
bcp "dbname..tablename" in c:\DT.txt -c -Sservername -Usa -Ppassword
/** 导出文本文件
bcp "dbname..tablename" out c:\DT.txt -c -Sservername -Usa -Ppassword

生成bcp命令:
//** 生成数据库所有表的bcp命令
select 'bcp dbname..' + name + ' out ' + '/data/' + name + '.out' + ' -n -Sservername -Uusername -Ppassword' from dbname..sysobjects where type = 'U'

posted on 2010-01-20 11:47  opper  阅读(2688)  评论(0编辑  收藏  举报

青丝网

脱发治疗

www.faako.com