【发布时间】:2011-03-24 15:26:58
【问题描述】:
我只是继承了一个相对较小的 SQL Server 数据库。我们有一个分散的系统在大约 10 个站点上运行,每个站点整天都被 60 到 100 个客户捣毁。在检查系统时,我突然想到了几件事:没有定义维护计划或密钥。
我有几十个不同的应用程序已经在访问数据库。它们中的大多数是用 C 语言编写的,带有内联 SQL。我被带进来做的部分工作是为所有内容编写存储过程,并让我们的应用程序移动到那里。然而,在我这样做之前,我真的认为我应该专注于这些看似明显的问题。
此外,我们最终会考虑复制到一个中心站点,所以我真的认为这些事情应该在我们考虑之前就解决。
制定重新设计方案和维护计划会很耗时,但不会有问题 - 我以前在单个站点上做过。但是,我将如何在十个(或更多)生产站点中对数据库实施这些重大更改,同时确保数据完整性并且不破坏应用程序?
【问题讨论】:
-
与答案相关:如果没有定义键,复制是如何完成的? (就此而言,如果没有密钥,您如何更新任何记录?)
-
此时没有复制。此外,还有逻辑键——例如客户编号。但是,数据库中没有定义主键,所以更新只是使用这些类型的值对数据库运行。
-
当您说逻辑时,您的意思是唯一键?您是否也有这些表上的聚集索引?
-
我的意思是,虽然记录在应用程序层中是唯一的(例如,随着客户 ID 的增加),但数据库中没有定义任何东西来强制完整性 - 没有主键,没有唯一约束等. 因此,虽然我知道由于应用程序层发生的事情,记录通常是唯一的,但我在数据库级别没有强制执行。
标签: sql-server database-design database-schema production-environment