2010-12-07 25 views
4

如何從SQL Server 2005數據庫中的表synonym確定列元數據?我有一個稱爲'ProjectSyn'的名爲'Project'的表的同義詞,但是我找不到同義詞的列元數據。如何從表中獲取列元數據同義詞

我的猜測是在某處確定同義詞的「基本表」,然後查詢該表的列元數據。這是一個正確的方法,如果不是,會是什麼?

+0

什麼是同義詞? – Aliostad 2010-12-07 12:49:44

+0

@Aliostad - 數據庫對象的替代名稱。有用的重命名對象而不破壞遺留代碼(至少在理論上 - 有時抽象不起作用在這個問題)。語法:`CREATE SYNONYM ProjectSyn FOR Project` – 2010-12-07 13:00:58

+0

謝謝。從未使用它。 – Aliostad 2010-12-07 13:03:21

回答

1

像這樣的事情? (編輯)

select c.* 
from 
    sys.columns c 
    inner join sys.synonyms s on c.object_id = object_id(s.base_object_name) 
where 
    s.name = 'ProjectSyn' 
1

是的,我認爲獲取基礎對象,然後檢索列是唯一的選擇。

要爲同義詞獲取基本對象名稱,只是查詢視圖sys.synonyms

3

這是我的解決方案,它以不同的數據庫的同義詞作品:

SELECT TOP 0 * INTO #TEMP1 FROM YourTable 
SELECT 
    [column_name] = c.name, 
    [data_type] = t.name, 
    [character_maximum_length] = c.max_length 
FROM tempdb.sys.columns c 
inner join tempdb.sys.types t on t.system_type_id = c.system_type_id 
WHERE [object_id] = object_id('tempdb..#TEMP1'); 
DROP TABLE #TEMP1