重建整个 Microsoft SQL Server 数据库

Ada*_*her 7 vendor-support sql-server sql-server-2012

是否有建议的方法从 SQL Server 2012 SP2 中的另一个数据库重建整个 SQL Server 数据库?

让我解释一下……我们有一个数据库,我们正试图对其启用部分遏制,然后将其添加到我们的 AlwaysOn 集群中。在尝试将遏制设置为部分时,我们只得到死锁错误。数据库从 SQL Server 2008 到 2008R2 到 2012(没有 SP、SP1、SP2)并且有一段时间的 TDE。

Microsoft 支持人员已经研究它几天了,但它看起来并不是很有希望,我认为我们现在倾向于某种形式的腐败。我们的应用程序和其他一切似乎仍然可以正常访问它,只是设置这个小标志不起作用。很奇怪的问题。

我在网上找到的唯一一个显示完全相同问题的参考来自葡萄牙语的 Technet 论坛帖子(翻译链接),但从未得到解决。

此时,我不能再等了,我只想在新数据库中重建这些数据。我想我可以编写整个程序,但是这个 DB 已经大约 20GB,所以这将是一个令人讨厌的脚本。

有没有人建议如何基于另一个数据库重新创建一个新数据库 - 没有标准的备份/恢复?编写脚本是正确的方法吗?

Han*_*non 8

使用 SSMS 为整个数据库 DDL 生成脚本。

在此处输入图片说明

使用该脚本创建一个新的空数据库。

用于BCP从所有表中导出数据。用于BCP将该数据导入到新数据库中。

DROPing确保在它之前备份原始数据库(如果您实际上打算删除它)。确保您测试恢复备份。


Phi*_*ppe 5

为了使脚本编写任务更容易,您还可以使用 3rd 方工具。MSVisualStudio 具有架构和数据比较工具集。我个人更喜欢 RedGate 的 SQLCompare 工具。

我也一直使用这些工具来简化 DEV->QA->PROD 部署。架构到位后,您可以执行一个简单的“数据导入向导”来根据需要复制数据。

使用这些工具的好处是它们在构建脚本时更加智能,将项目按正确的创建顺序排列,预先警告您可能的错误,仅编写您需要创建/更新的项目的脚本,并包括您可能会忘记的服务器项目仅使用 DBscripting 工具,例如登录或链接服务器或安全性。