Sql 如何将具有用户、架构和角色的所有数据库从一台服务器移动/复制到另一台服务器
我需要将所有数据库(仅5个)从一台服务器移动/复制到另一台服务器。我知道如何进行备份和恢复,但我还需要移动数据库的所有信息,包括用户、架构等。一般来说,复制数据库有两种可能: 1备份恢复 在这种情况下,您会遇到一些问题,主要是Sql 如何将具有用户、架构和角色的所有数据库从一台服务器移动/复制到另一台服务器,sql,sql-server,database,sql-server-2008,Sql,Sql Server,Database,Sql Server 2008,我需要将所有数据库(仅5个)从一台服务器移动/复制到另一台服务器。我知道如何进行备份和恢复,但我还需要移动数据库的所有信息,包括用户、架构等。一般来说,复制数据库有两种可能: 1备份恢复 在这种情况下,您会遇到一些问题,主要是将数据库移动到新服务器后,用户可能无法登录到新服务器。此处提供了此问题的解决方案: 2它只是将数据库文件复制(或移动)到另一台服务器 关于每种方法的优缺点,您可以在此处阅读一般来说,复制数据库有两种可能性: 1备份恢复 在这种情况下,您会遇到一些问题,主要是将数据库移动到
将数据库移动到新服务器后,用户可能无法登录到新服务器。
此处提供了此问题的解决方案:
2它只是将数据库文件复制(或移动)到另一台服务器
关于每种方法的优缺点,您可以在此处阅读一般来说,复制数据库有两种可能性: 1备份恢复 在这种情况下,您会遇到一些问题,主要是
将数据库移动到新服务器后,用户可能无法登录到新服务器。
此处提供了此问题的解决方案:
2它只是将数据库文件复制(或移动)到另一台服务器
关于每种方法的优缺点,您可以在这里阅读
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;
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;
我建议使用红门的来完成这项任务。我花了一点钱,但每一分钱都值。请注意,SQL Compare不会迁移物理数据库,而只迁移数据库的内容。我建议使用Red Gate进行此任务。我花了一点钱,但每一分钱都值。请注意,SQL Compare不会迁移物理数据库,仅显示数据库的内容。您运行的是哪个版本的SQL Server?您运行的是哪个版本的SQL Server?移动登录似乎很复杂此选项移动登录似乎很复杂,但此选项不会添加新创建的不可知数据库的登录。您是否选择了为登录编写脚本的选项。你说的是安全级别的登录吗?我也有一个脚本来生成它。是的,我说的是安全级别登录,在上面的脚本中,每个
?
都用括号括起来(即[?]
)支持包含点等内容的数据库名称。但此选项不会添加新创建的登录名,而这些登录名与数据库无关。是否选择此选项为登录名编写脚本。你说的是安全级别的登录吗?我也有一个脚本来生成它。是的,我说的是安全级别登录。在上面的脚本中,每个?
周围都用括号(即[?]
)来支持包含点等内容的数据库名。还有。。。针对具有相同条件(移动数据库、角色、模式、USRE等)(全部!)的postgres的解决方案可能pg_dumpall
?但是如果没有文件,就直接从serverA到serverB。有可能吗?还有。。。针对具有相同条件(移动数据库、角色、模式、USRE等)(全部!)的postgres的解决方案可能pg_dumpall
?但是如果没有文件,就直接从serverA到serverB。有可能吗?