2013-08-20 16 views
1

我有一個我繼承的Sql Server 2008數據庫。許多應用程序和SSIS包都可以處理該數據庫。不久之前,數據庫的範圍發生了變化,添加了很多新的表格。由於這個原因,很多表名(甚至數據庫名稱本身)都不再有意義,導致了一個非常混亂的模式。我可以以向後兼容的方式更改SQL Server表名嗎?例如添加一個永久別名?

我可以馬上重新命名錶格並更改應用程序和流程以使用新名稱,但同時導致的混亂和停機時間將不被接受。

有沒有一種方法可以爲表(如永久別名)添加替代名稱,我可以使用它來引用新表名或舊錶名,直到完成所有重構爲止?

+0

也許創建視圖(如簡單的選擇來實現)可能是解決方案嗎?該視圖可以被視爲別名。 –

+0

我投棄權票,或重新命名並創建意見。 http://stackoverflow.com/questions/1526068/sql-server-table-and-column-alias-for-legacy-applications –

回答

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; 

如果您需要名稱更明智的,你必須這樣做,使用視圖,同義詞只覆蓋一個子集的數據庫級對象。

Some other info here

2

你可以用sp_rename將其重命名,然後添加同義詞:此表

CREATE SYNONYM OldTableName FOR NewTableName 
相關問題