使用数据库集成程序实现异地备份(使用数据库集成程序实现异地备份功能)

使用数据库集成程序实现异地备份(使用数据库集成程序实现异地备份功能)

解决方案goocz2025-05-06 12:29:102A+A-

大圣归来,不负众望!因为工作原因,一直在忙一些其他的事情,有好久没有在这个号上面更新文章了,今天给大家说声抱歉。以后我会经常更新,绝对不辜负我这1000多关注者,哈哈哈。 好了,废话不多说,进入正题。

今天主要讲的是sqlserver 备份问题,大家最常用的方式应该就是手动备份,或利用数据库的任务创建一个自动备份的定时任务。但是是有弊端的,就是如果数据库出现故障,进不了系统会很难解决的,因为这个问题我研究了 微软官方文档,就是利用数据库程序集来实现数据库的定时备份,并上传到指定服务器。大概思路是这样的:

数据库异地备份基本原理:

1、数据库集成程序集代码长这样


2、数据库程序集管理软件,方便开启数据库CLR程序集支持,创建证书、秘钥。无证书的程序集不能操作IO和使用多线程或异步编程。使用sql 代码也可以开启以上功能。


3、开发生成的程序集就是个DLL文件(第一个图的代码生成的文件)


4、数据库程序在数据库程序集中进行创建。以存储过程的形式体现,方便调用。


5、创建一个作业。计划中使用重复执行 间隔根据自己需要创建。如每天一次 或 每N 小时执行一次。命令中传入 上传的地址、账号、密码、路径、协议。是否保留机备份等


6、本地备份的数据(之前我测试的备份)


7、传入到群晖服务器中备份(由于这个程序集写入了支持SMB和FTP 两种协议 群晖都支持)。


8、传输时的一个进度展示日志。路径D:/dbbackup/log/数据库名称.log,如果作业中传入的参数不正确 ,会在D:/dbbackup/路径内生成一个backuperror的日志文件。


9、官方安全性解释

程序集集成原理:基于CLR程序开发。SQLSERVER数据库自身支持集成,功能默认处于关闭状态,开启CLR 才可以使用程序集。程序集的类型:安全,访问外部,无限制。安全的程序集只能使用增、删、改、查。操作于数据库内部,代码中试图执行的如何操作IO 的代码都会返回异常。访问外部的程序集:加入了操作IO(如在服务器中创建文件,访问系统文件等)的权限。无限制:加入了多线程、和异步的权限。

程序中所有代码必须是基于官方给定的基础类库去开发,代码中如果引用了第三方程序包,程序执行时会返回异常。(经测试确实是这样,代码必须全部手敲)

微软官方给出的类库。


根据官方文档查看使用 操作IO 和 多线程的程序时有两种方法,一种是将数据库置于不安全的状态(测试阶段);另一种就是使用证书形式。所以我写的备份程序集采用了证书形式。

秘钥证书作用。创建证书是映射一个登陆凭证。确保数据库的后续程序集安全性,开发的所有程序集凡是操作IO和多线程 必须使用和登陆凭证使用相同的秘钥证书才能创建到数据库程序集中,证书不同无法创建。

官方部分说明



好了 这篇文章总算是写完了。整个流程下来呢,只有第一个图的代码是最关键的,那个生成的dll文件是数据库备份核心插件。

写这篇文章,也是出了一个新意的思路,欢迎大神来喷。

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5