将数据从 SQL Server 2005 迁移到 2016

Rob*_*ert 9 sql-server-2005 sql-server migration sql-server-2016

我是管理 SQL Server 的新手,但我对 SQL 语言和制作 SSIS 包很满意。

我想将数据从 SQL Server 2005 迁移到 2016。

我的问题是我是否需要担心系统数据库和其他对象,例如索引、存储过程、视图、安全性和权限。登录或者我可以只迁移数据。

在这种情况下,这将是推荐的程序。

Mik*_*lsh 7

Max 给出了一个不错的答案,一旦我完成输入这个替代视图,我就会赞成。

我不喜欢在进行升级迁移时恢复系统数据库,我更喜欢进行迁移而不是就地升级,正如我在另一个问题的冗长回答中所讨论的那样。

基本上,我喜欢在进行迁移时开始“新鲜”。我发现通过恢复进行系统数据库迁移和升级有时会导致恢复失败,并且可能会带来潜在的罪恶。

您还询问了索引、存储过程、视图。数据库级别的这些项目都应该位于用户数据库中。因此,当您将数据库 X 恢复到新服务器时,所有数据库对象(表、用户、视图、过程、函数等)也将在那里。

系统数据库中存在的是作业、登录、警报、链接服务器、加密密钥等。实例级别的项目。

我喜欢查看这些并使用各种脚本迁移我需要的内容 - 最近是DBATools.Io powershell 脚本。我特别喜欢使用他们的脚本来复制 sql 登录,因为它处理 SQL 身份验证的用户,保持他们的密码和安全标识符相同,这样来自这些登录的数据库用户就可以工作。他们还有一个完整的SQL Server 迁移命令,该命令运行他们的子命令来复制我通常会复制的项目。

我不相信 Max 对这个答案有误,因此得到了赞成。我只是取得了更多的成功和更多的运气,并且更轻松地迁移到新的而不是尝试在版本之间恢复系统数据库。我想说的是,老实说,我不记得上次我进行版本升级迁移是什么时候了,并且没有这样做,而是恢复系统数据库。


Han*_*non 4

如果您需要访问存储在这些数据库中的元数据,您需要考虑迁移系统数据库(master、msdb,或许还有 model)。

Master 存储登录信息、安全证书等项目。

msdb 包含有关备份的详细信息,并存储 SQL Server 代理作业配置等详细信息。

模型可能已由您或您的团队自定义,以允许新创建的空白数据库包含您在每个数据库中使用的一组预定义对象。

迁移系统数据库可以相当容易地完成;详细说明可从 MSDN 的系统数据库备份和恢复 (SQL Server)获得。

根据您的要求,您可以BACKUP DATABASE对 2005 实例上的用户数据库执行操作,然后RESTORE DATABASE对 2016 实例上的用户数据库执行操作以获取整个数据库,包括所有数据、索引和其他对象。

至少在最初,这将需要与 2005 实例上的数据库消耗的空间量相同的空间。但是,一旦恢复了数据库,您就可以利用数据压缩来大幅减少所需的占用空间。

有关执行备份的详细信息,请参阅关于使用 SQL Server 备份;有关还原的详细信息,请参阅关于还原方案