2011-06-15 68 views
8

SQL Server中存儲的擴展屬性在哪裏?SQL Server中存儲的擴展屬性在哪裏?

它們是存儲在包含它添加到的對象的數據庫中,還是它們被單獨存儲並以某種方式綁定到本地機器。

例如,如果添加SSMS中的「Description」字段(MS_Description擴展屬性)以記錄表的列,然後關閉數據庫引擎並複製MDF/LOG文件以將其附加到不同的機器,擴展屬性會與複製的文件一起使用,還是會遺留在本地計算機上的主數據庫(或類似的東西)中?

回答

12

它們存儲在數據庫中。您可以通過查詢sys.extended_properties來獲取它們,並將它們存儲在System Base Table sys.sysxprops中。

+0

+1查找實際的系統表。 – RThomas 2011-06-16 00:38:02

+1

謝謝!我現在更適合使用擴展屬性。同樣有趣的:「要綁定到系統基表,用戶必須通過使用專用管理員連接(DAC)嘗試從系統基表執行SELECT查詢,而無需連接連接到SQL Server實例通過使用DAC引發錯誤。」 – Triynko 2011-07-20 15:23:11

+2

此外,這裏是如何加入sys.extended_properties和SYS.COLUMNS的意見,並得到MS_Description擴展屬性: SELECT * FROM sys.extended_properties p內部聯接上c.object_id = p.major_id和c.column_id SYS.COLUMNSÇ = p.minor_id其中p.name ='MS_Description' – Triynko 2011-07-20 16:18:31

2

MSDN

「[... E] xtended屬性存儲在數據庫中[。]」

所以,是的,當你創建一個備份和/或移動數據庫,擴展屬性與它一起。

+0

我標誌着其他響應的答案,因爲我聽說過,擴展屬性存儲在數據庫中的「當您創建一個備份」,但備份過程將創建一個單獨的備份文件,並在它可以拉從主數據庫信息該過程,所以我不清楚數據是否實際上始終存儲在數據庫的主MDF文件中。另一個答案引用了顯示哪些系統表擴展屬性存儲在其中的文檔,並明確指出該表存在於每個數據庫(MDF文件)中,而不僅僅是主數據庫。 – Triynko 2012-05-14 21:40:43