欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用SQL Server Management Studio(SSMS)复制数据库

程序员文章站 2022-04-05 09:23:46
利用SQL Server Management Studio(SSMS)复制数据库 标签(空格分隔): SQLServer 前言 今天由于客户购买的软件版本确认了,而之前进行开发的本地数据库版本较低,打算复制一份开发数据库,升级为客户软件版本的数据库再进行后续开发。以前做这种事情一般都是在不同的数据 ......

利用SQL Server Management Studio(SSMS)复制数据库

标签(空格分隔): SQLServer


前言

今天由于客户购买的软件版本确认了,而之前进行开发的本地数据库版本较低,打算复制一份开发数据库,升级为客户软件版本的数据库再进行后续开发。以前做这种事情一般都是在不同的数据库实例上进行,一直都是使用备份——恢复的方法,今天这次是在同一个实例上,我就在想强大的SSMS有没有向导式的复制数据库方法呢?

看似美好的开始

利用SQL Server Management Studio(SSMS)复制数据库

找到复制数据库的过程很简单,在SSMS上右击数据库就能在任务里找到复制数据库的选项,点开进入了非常友好的图形化操作界面。

利用SQL Server Management Studio(SSMS)复制数据库

依次选择源数据库服务器与目标数据库服务器,和SSMS的任务差不多,看来跨服务器复制数据库也并不复杂,点击下一步,提示

利用SQL Server Management Studio(SSMS)复制数据库

行,那就去SQL Server配置管理器(SQL Server Configuration Manager)打开SQL Server代理(也可以在系统服务中打开)。打开之后可以正常进入下一步了,注意有警告,由于是警告且是开发环境,先试试忽略警告看能不能行。

利用SQL Server Management Studio(SSMS)复制数据库

选择目标数据库的名称与实体位置,然后接下来就是一路下一步(中间可以选择输出到Windows日志,我试过不选的时候可以在SQL Server日志看到结果,选了之后就只能在Windows日志中看了)

利用SQL Server Management Studio(SSMS)复制数据库

果不其然的失败,并无波折的成功

利用SQL Server Management Studio(SSMS)复制数据库

果不其然,失败了,回去看忽略的警告
“若要使用分离和附加方法,运行SQL Server代理作业时所使用的Integration Services代理账户必须可以访问源服务器和目标服务器的文件系统”

OK,观察一下SQL Server代理的用户(在SQL Server配置管理器可以看到,同样可以在系统服务中查到)是NT SERVICE\SQLSERVERAGENT。
在SSMS的安全性——用户名中可以找到该用户,点开用户属性,发现只有sysadmin和public角色,没有diskadmin角色

利用SQL Server Management Studio(SSMS)复制数据库

本来勾上diskadmin角色,应该就可以了,但是由于我对SQL Server代理了解不深,既然安装默认没有选那就保持原样吧,而数据库复制也不常用,我把Server代理的用户暂时改成本地用户重新执行复制。

利用SQL Server Management Studio(SSMS)复制数据库
利用SQL Server Management Studio(SSMS)复制数据库

OK,复制成功。重新再把SQL Server代理的用户改回NT SERVICE\SQLSERVERAGENT。