2011-08-25 3 views
0

Nous mettons un identifiant unique dans les propriétés étendues de chaque table, qui est ensuite lu par certains rapports. J'aimerais pouvoir le faire à la volée, donc nous n'avons pas besoin de le taper à la main. Toutefois, SQL Server 2008 n'autorise pas les mises à jour ad hoc pour les catalogues système. Comment puis-je mettre à jour les propriétés étendues avec une requête ad hoc?Mise à jour des métadonnées de table à la volée

Comment puis-je mettre à jour les propriétés étendues avec une requête ad hoc? Ou y a-t-il un autre endroit où je peux stocker des métadonnées où elles peuvent être facilement lues par des rapports?

Toute aide est grandement appréciée.

+1

Qu'essayez-vous d'accomplir en stockant des métadonnées comme celle-ci? Il y a probablement un meilleur moyen. – JNK

+0

Nous stockons un identifiant de table unique dans les métadonnées, essentiellement pour que nous sachions ce que contient la table (données de février 2011, par exemple). – divided

+0

yike, vous ajoutez/soustrayez/mettez à jour les tables rapidement? – JNK

Répondre

2

Une option:

propriétés étendues sont ajoutées à l'aide sp_addextendedproperty (il y a mise à jour et procs baisse aussi). Cela nécessite des droits améliorés.

Vous pouvez donc passer un appel à un autre proc avec EXECUTE AS pour augmenter les droits de la procédure stockée uniquement.

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

EXEC sp_addextendedproperty ... 
GO 

Soit cela, ou utilisez votre propre table pour maintenir cela.

+0

Au lieu de l'encapsuler dans un proc, puis-je appeler sp_addextendedproperty (@ name, @ value)? – divided

+0

@divided: cela nécessite suffisamment de droits pour déposer et créer des objets. Ceci est un non-non dans de nombreux magasins ou si vous êtes soumis à SOX/PCI etc – gbn

Questions connexes