代码之家  ›  专栏  ›  技术社区  ›  Martin

建议使用工具来管理SQL Server 2005中的扩展属性[已关闭]

  •  2
  • Martin  · 技术社区  · 16 年前

    在管理扩展属性方面,ServerManagementStudio往往有点不直观,所以任何人都可以推荐一个合适的工具来改善这种情况。

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

    2 回复  |  直到 11 年前
        1
  •  5
  •   Pops Atula    12 年前

    看看数据字典创建者,这是我编写的一个开源工具,可以更容易地编辑扩展属性。它还包括以各种格式导出信息的能力。

    http://www.codeplex.com/datadictionary

    enter image description here

        2
  •  1
  •   Matthew Ferry    11 年前

    您还可以考虑使用一个好的可重新运行的脚本来维护扩展的属性。系统存储过程可以很好地完成这项工作,但它们是一个难题,因此我用自己的存储过程来包装它们,以便更容易地处理它们。

    例如,下面是一个针对列级扩展属性的存储过程,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