2

我有一个我继承的 Sql Server 2008 数据库。许多应用程序和 SSIS 包都使用该数据库。不久前,数据库的范围发生了变化,并添加了许多新表。因此,很多表名(甚至数据库名本身)不再有意义,导致架构非常混乱。

我可以立即重命名表并更改应用程序和进程以使用新名称,但同时它会导致的混乱和停机时间是不可接受的。

有没有一种方法可以为表添加一个备用名称(如永久别名),我可以使用它来引用新表名或旧表名,直到我的所有重构完成?

4

2 回答 2

4

首先创建一个同义词。

CREATE SYNONYM dbo.SensibleName FOR dbo.CrazyName;

现在在您的代码库中找到所有对的引用CrazyName,并将它们更新为引用SensibleName。一旦你相信你已经找到了它们,你最终可以运行:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
  DROP SYNONYM dbo.SensibleName;
  EXEC sp_rename N'dbo.CrazyName', N'SensibleName', N'OBJECT';
COMMIT TRANSACTION;

如果您需要使名更合理,则必须使用视图来实现,因为同义词仅涵盖数据库级对象的子集。

这里有一些其他信息

于 2013-08-20T21:41:00.660 回答
2

您可以重命名它,sp_rename然后添加同义词:

CREATE SYNONYM OldTableName FOR NewTableName
于 2013-08-20T21:41:09.080 回答