2011-08-25 76 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