我尝试使用 SQL Server 2012,但没有成功:
如何将 SQL Server 2008 实例复制到另一台服务器?
SQL 无法在目标服务器上启动,它首先抱怨无法写入其错误日志文件,现在它抱怨它有一个内部错误。
我认为这可能是 ACL/权限的问题,但安全性看起来是一样的,我所做的就是用源服务器中的 SQL 目录覆盖现有的 SQL 安装目录。
源服务器是 Windows 2008 R2,目标服务器是 Windows 2012 R2(如果这有什么区别的话)
是的,我知道如何通过“sp_help_revlogin”方式进行操作,但我们有很多用户,我不想跑到每个人那里去获取他们的密码
这是 MSql 的一个简单操作,为什么 MS 一定要把各种隐藏权限和垃圾放入文件系统中?当 SQL 服务器关闭时,我认为数据库应该只是另一个文件。
此外,如果 SQL 服务器发生转储,我真的不希望从备份映像中恢复所有 600 GB,如果我可以只恢复 SQL 数据库文件中的 80GB,您明白吗?
答案1
我是 SQL DBA。我认为您误解了sp_help_revlogin
工作原理:http://support.microsoft.com/kb/918992
它是您在源服务器上运行的一组脚本,输出将是一个很长的脚本,用于重新创建所有登录,包括(加密)密码。
获取该脚本并在目标服务器上运行它,它将重新创建所有登录,并且您恢复的(或附加的)数据库应该可以正常识别它们。
最多 5 分钟的过程,除非您想浏览输出列表并包含/排除单个登录。
我不知道您在复制整个充满 SQL 文件的文件夹时遇到了什么麻烦,如果您不只是从新安装的实例覆盖文件,您可能需要在那里倒退一两步。
我喜欢的方法是:
- 从全新安装中运行新的 SQL 实例
- 复制 MASTER 是可能的,但非常棘手。坦率地说,我要复制的唯一系统数据库是 MSDB(用于保留计划的作业),或者只是从旧框中编写脚本并重新创建它们。
- 对于用户数据库,可以从旧系统进行备份/恢复,或者复制仅数据 (mdf、ndf) 和日志文件 (ldf)到新盒子并将它们连接起来。
祝你好运。你还可以在 dba.Stackexchange.com 上找到更详细的帮助。
答案2
我认为这可能是 ACL/权限的问题,但安全性看起来是一样的,我所做的就是用源服务器中的 SQL 目录覆盖现有的 SQL 安装目录。
你为什么不备份并恢复数据库?
为什么微软要把各种隐藏权限和垃圾放入他们的文件系统?当 SQL 服务器关闭时,数据库应该只是另一个文件,恕我直言。
指责微软缺乏理解并不好。你选择了一种不受支持的方法来传输数据库,这不是他们的错。数据库只是文件。你可以轻松地备份和恢复它们,或者分离它们,将它们复制到新服务器,然后附加它们。
此外,如果 SQL 服务器发生转储,我真的不希望从备份映像中恢复所有 600 GB,如果我可以只恢复 SQL 数据库文件中的 80GB,您明白吗?
当然,这很容易做到,但首先你必须知道自己在做什么。
这一切都不是 SQL Server 或 Microsoft 的错。
答案3
您的数据库“只是”文件。如果您在 SSMS 中右键单击数据库并单击属性,则可以找到该信息。通常有数据库文件 (.mdf) 和事务日志 (.ldf)。
我认为你错在不应该复制安装路径的所有内容。相反,你只应该将 .mdf 和 .ldf 文件复制回与源服务器上完全相同的位置。
我通常只是移动我需要的单个数据库文件,然后在 SQL 中手动重新添加它们。但是,我相信如果您复制系统数据库,您将转移整个 SQL 配置。这里最重要的是所有数据库都位于与源服务器上的原始路径相同的路径中,因为该信息将包含在系统数据库中。
说到备份和恢复 - 是的,您可以只恢复 .mdf 和 .ldf 文件。但是,SQL 的各种备份和恢复方法是另一个话题。
当然,在进行所有这些操作时,您需要确保 SQL 服务器服务已停止,或者数据库已脱机。