2

在管理扩展属性时,Server Management Studio 往往有点不直观,所以任何人都可以推荐一个可以改善这种情况的好工具。

我想做的一件事是拥有可以应用对象的模板,从而标准化应用于对象的属性的命名和内容。

4

2 回答 2

5

看看 Data Dictionary Creator,这是我编写的一个开源工具,可以更轻松地编辑扩展属性。它还包括以各种格式导出信息的能力。

http://www.codeplex.com/datadictionary

在此处输入图像描述

于 2008-08-20T16:36:26.717 回答
1

您可能还考虑拥有一个很好的可重新运行的脚本,让您维护扩展的属性。系统存储过程可以很好地完成这项工作,但它们很痛苦,所以我用自己的存储过程包装它们,这样我就可以更轻松地处理它们。

例如,下面是一个针对列级扩展属性的存储过程,a) 检查扩展属性是否已经存在,b) 如果存在则删除它,c) 然后添加它。

这让我可以维护一个干净的可重新运行的(这对于自动构建过程至关重要)脚本,其中包含一个简单的衬里以添加扩展属性(仅限列级别 - 您需要修改此属性或为其他对象类型编写类似的属性) )。

这是存储过程:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].                    [snap_xpColumn_addUpdate]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].snap_xpColumn_addUpdate
GO

CREATE PROCEDURE [dbo].[snap_xpColumn_addUpdate]
    @TableName NVARCHAR(255), 
    @ColumnName NVARCHAR(255),
    @ExtPropName NVARCHAR(255), 
    @ExtPropValue NVARCHAR(255), 
    @SchemaOwner NVARCHAR(255) = 'dbo'
AS

    IF EXISTS(SELECT * FROM     ::fn_listextendedproperty(@ExtPropName,'SCHEMA',@SchemaOwner,
                                                          'TABLE',@TableName,'COLUMN',@ColumnName))
    BEGIN
        -- drop it
        EXEC sys.sp_dropextendedproperty @name=@ExtPropName, 
                                             @level0type=N'SCHEMA',
                                             @level0name=@SchemaOwner, 
                                             @level1type=N'TABLE',
                                             @level1name=@TableName, 
                                             @level2type=N'COLUMN',
                                             @level2name=@ColumnName
    END

    -- add it
    EXEC sys.sp_addextendedproperty @name=@ExtPropName, 
                                        @value=@ExtPropValue, 
                                        @level0type=N'SCHEMA',
                                        @level0name=@SchemaOwner, 
                                        @level1type=N'TABLE',
                                        @level1name=@TableName, 
                                        @level2type=N'COLUMN',
                                        @level2name=@ColumnName


GO
于 2013-02-27T06:54:05.383 回答