【发布时间】:2014-04-28 21:43:57
【问题描述】:
我们在 MS SQL Server 2000 中有一个数据库。
有一天,一张表中的一列消失了,我不知道它为什么会发生或何时发生。
(请不要笑,这是一个老应用程序,架构设计并没有我想象的那么好。我是该应用程序的新支持人员。)
您知道如何跟踪 MS SQL Server 2000 数据库模式的变化吗?
【问题讨论】:
标签: sql-server database database-schema
我们在 MS SQL Server 2000 中有一个数据库。
有一天,一张表中的一列消失了,我不知道它为什么会发生或何时发生。
(请不要笑,这是一个老应用程序,架构设计并没有我想象的那么好。我是该应用程序的新支持人员。)
您知道如何跟踪 MS SQL Server 2000 数据库模式的变化吗?
【问题讨论】:
标签: sql-server database database-schema
事实上,你不会有太多事情要做,而是从“谁有权做这件事?”开始,然后问他们所有人。
您可以通过还原您拥有的最旧备份、查看该列是否存在并继续工作来缩小“时间”范围。如果数据库处于完全恢复模式,并且您拥有所有事务日志,则可以还原数据库并应用日志,直到该列消失,但这仍然只会给您一个时间,而不是谁。
【讨论】:
永远不要通过 GUI 修改数据库表,因为没有架构更改的记录。
在过去,我们会将架构脚本放置在共享文件夹中,以便我们可以跟踪更改。因此,员工可以四处打听,看看是谁创建了脚本。您是否将 .sql 文件存储在任何地方?
另一个非常简单的源代码控制想法是将整个数据库的单个脚本存储在 TFS 或 Subversion 中,并且每周只为数据库编写脚本。这允许您并排比较脚本,以便您可以直观地看到更改。我认为 redgate 有一个工具可以以某种方式自动执行此操作。
绝对值得考虑前进:)
【讨论】: