我需要将所有数据库(仅5个)从一台服务器移动/复制到另一台服务器。我知道如何进行备份和恢复,但我还需要移动我的数据库的所有信息,包括用户,架构等......
答案 0 :(得分:3)
有脚本数据和登录的选项(很多其他东西)。它非常方便。
这是一个脚本,它将生成一个脚本以添加所有数据库上的所有角色
declare @selectStatement varchar(1000)
set @selectStatement = 'Use ?;SELECT ''USE ?''; SELECT ' + '''EXECUTE sp_AddRoleMember ''''' + ''' + roles.name + '''''''+','''''+''' + Replace(users.name,''DOMAINA'',''DOMAINB'') + ''' + '''''''
from sys.database_principals users
inner join sys.database_role_members link
on link.member_principal_id = users.principal_id
inner join sys.database_principals roles
on roles.principal_id = link.role_principal_id'
--where users.name like ''%%'''
EXEC sp_MSForEachDB @selectStatement;
答案 1 :(得分:1)
一般来说,复制数据库有两种可能性:
1 BACKUP-RESTORE
在这种情况下,您将获得一些主要的问题After you move databases to a new server, users may not be able to log in to the new server.
此处提供了此问题的解决方案:
How to transfer logins and passwords between instances of SQL Server
2 DETACH-COPY-ATTACH它只是将数据库文件复制(或移动)到另一台服务器。
关于每种方法的优缺点,您可以在这里阅读SQL Server backup/restore v.s. detach/attach
答案 2 :(得分:1)
我建议使用Red Gate的SQL Compare来执行此任务。我花了一点钱,但每一分钱都值得。请注意,SQL Compare不会迁移物理数据库,只迁移数据库的内容。