Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221307
  • 博文数量: 70
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-08 11:53
文章分类

全部博文(70)

文章存档

2011年(1)

2010年(69)

我的朋友

分类: 数据库开发技术

2010-11-04 07:53:22

论坛上一直看到有朋友问
1 我的数据库一个表怎么定期同步到另一个表
2 我的局域网络上两台sql server服务器上的数据库怎么同步
3 我的数据库迁移,n多用户登录信息怎么备份
4 我怎么定期去调用windows上的一个程序

  诸如此类很多...大凡看到数据库复制,后面一般都有跟贴邹老大的复制数据库方法,那段东西确实很经典,可以适应不同的平台(事实上我也收藏了),但是要知道那段东西我大概7 8年前就看到了,现在2005,2008都出来了,难道这么多时间里就没人研究其他方法?

  而且那段东西对初学者可能比较困难,比如建立MSDTC,链接服务器等,很多情况写SQL代码当然可以达到效果(事实上就没有写代码达不到的),但是写代码不一定意味着效率高。你可能要面对很多亢长的代码,还有很多可能从来没有涉及的系统存储过程。就拿问题一来说,论坛上说法很多,有建议用触发器的,有建议用select * into的,甚至有人建议用复制发布订阅的。那些方法不是不可以,但是往往会带来一系列问题,比如自增列的消失,索引必须重建利用等等。关键是效率不一定高。不管你是数据库管理员还是数据库开发,能省时间总不错吧.

  SQL Server有自带强大的工具DTS/SSIS(因为DTS太好用了,微软2005后决定把它单独做成一个扩展,而不是只是SQL Server的一个功能属性)合理使用这个工具很多问题根本不是问题,这篇文章将讨论一下DTS/SSIS的一个好用又方便特性--复制SQL Server对象(如果要全面论述DTS/SSIS,那足可以写一本书了,我只是以点代面,抛砖引玉,大家工作学习中可以继续发掘,共享经验),数据转换任务估计大家比较熟悉不讨论了,还有其实数据库的导入导出数据就是利用的调度dts包的特性来进行的,今天写点可能大家不太常用的.

  本篇文章主要解决数据库及其对象的复制传输,(不是说只能整个复制数据库,你只想复制存储过程,视图,自定义函数也完全可以)以后看看反响如何再写几篇, 比如备份用户登录信息,dts自带的复制数据库向导(和今天说的不一样),dts和windows交互,多层dts综合应用等.本来要写个FTP相关的前些天看到Roy写了,就不写了.

  废话不多说上图(我这边英文版,我尽量翻译但是不一定准确,仅作参考)
  written by:billpu
  原帖地址:http://blog.csdn.net/billpu/archive/2010/11/01/5980144.aspx

一 拖出Copy SQL Server Oject Task图标(中文好像叫复制对象任务)



二 配置源和目标信息
这里没什么好说的,直接看图吧



三 设置复制的具体属性,这里重点说一下


(1) 创建目标(表,视图,存储过程,约束等)
  * 删除目标(默认选项,如果存在对象就删除)
  * 包括依赖的组件(默认选项,比如你复制一个自定义函数,dts会把相关的表传送过去)
  * 包括扩展属性(非默认选项,复制SQL Server的扩展属性,比如字段的描述信息等)

(2) 复制数据,这边就不多说了
  * 替换 (默认选项)
  * 追加

(3) 使用collation(默认选项)
不清楚具体应该怎么翻,使用排序规则吧
作用是对排序规则进行转换也就是转换成目标的排序规则(从源代码页转换到目标代码页),如果不选择这个选项,数据可能造成乱码或者错误.

(4) 复制所有目标(默认选项)
如果你是想复制数据库级别,那你选上就是了.
如果你只是想传输部分对象,那就取消这个选项,同时右边的选择对象(select objects)会亮起,里面可以设置具体的复制对象比如某几个表,存储过程,视图等,这里就不单独截图了,大家一看就知道的.

(5)使用默认选项
同样取消,右边的按钮Option会亮起,这里我觉得有必要单独说明一下,放后面了,请耐心收看.

四 配置复制选项(截图水平不高,图比较大,请见谅)


(1) 安全选项
  * 复制数据库用户及角色
  * 复制SQL Server登录
  * 复制对象级别权限(copy object-level permissions)
前面两个选项非常有用,复制用户角色登录信息等到目标实例(如果和源实例不同),能很好的解决正常备份还原产生的孤立用户等问题
复制对象级别权限:复制对象的权限设定到目标数据库

(2)表选项
复制索引,全文索引等,基本一看就知道
用unicode生成脚本:使用unicode编码生成脚本

(3)复制对象的时候加用括号标识,这个看上去似乎有点莫名其妙 呵呵 至少我是这么认为的

五 运行DTS包
按顶上那个小三角启动dts包


六 定期调度DTS包
如果你的DTS包需要定期执行,可以借助作业,方法很简单启动windows的Agent服务后,右键单击包名(保存后),选Schedule Package,弹出窗口如下,方法这边就不罗嗦了,一看就知道



结束语
DTS/SSIS是相当强大的管理(开发)工具,就拿数据库复制来说,如果对DTS操作稍微熟悉的话,复制数据库估计1分钟时间就可以设定完毕.可以节省大量的时间,并且可以实现部分对象复制,相关用户传输等.
当然缺点也明显,双方不能互访的时候没法完成调度,这时候就只能借助备份还原
阅读(650) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-05 08:39:58

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com