2011-08-25 77 views
0

我們在每個表格的擴展屬性中放置了一個唯一標識符,然後由某些報告讀取。我希望能夠在飛行中做到這一點,所以我們不必親自輸入。但是,SQL Server 2008不允許臨時更新系統目錄。實時更新表格元數據

如何使用即席查詢更新擴展屬性?或者,還有另一個地方可以將元數據存儲在可以通過報告輕鬆讀取的元數據中?

任何幫助是極大的讚賞。

+1

你想通過存儲這樣的元數據來完成什麼?可能有更好的方法。 – JNK

+0

我們在元數據中存儲了唯一的表標識符,基本上是爲了讓我們知道表中包含的內容(例如2011年2月的數據)。 – divided

+0

yikes,你正在快速增加/減少/更新表? – JNK

回答

2

一個選項:

擴展屬性是使用sp_addextendedproperty(有更新和下降特效太)加入。儘管這些要求增強的權利。

因此,您可以在另一個proc中使用EXECUTE AS將此調用包裝爲只升級存儲過程的權限。

CREATE PROC dbo.OurMetaDataUpdate 
    @tablename ... 
    @uniqueid ... 
WITH EXECUTE AS OWNER 
AS 
SET NOCOUNT ON 

EXEC sp_addextendedproperty ... 
GO 

要麼是這樣,要麼用你自己的表來維持這個。

+0

而不是將其包裝在proc中,我可以只調用sp_addextendedproperty(@ name,@ value)? – divided

+0

@divided:這需要足夠的權利來刪除和創建對象。這是許多商店的禁忌,或者如果你受到SOX/PCI等的限制 – gbn