2

Server Management Studioは、拡張プロパティの管理に関しては少し直感的ではない傾向があるため、状況を改善する適切なツールをだれでも推奨できます。

私がやりたいことの1つは、オブジェクトを適用できるテンプレートを用意して、オブジェクトに適用されるプロパティの命名法と内容を標準化することです。

4

2 に答える 2

5

Data Dictionary Creator を見てみましょう。これは、拡張プロパティを簡単に編集できるように私が作成したオープン ソース ツールです。さまざまな形式で情報をエクスポートする機能も含まれています。

http://www.codeplex.com/datadictionary

ここに画像の説明を入力

于 2008-08-20T16:36:26.717 に答える
1

また、拡張プロパティを維持できる再実行可能なスクリプトを用意することも検討してください。これを行うためのシステム ストアド プロシージャはうまく機能しますが、面倒なので、独自のストアド プロシージャでラップして、より簡単に処理できるようにしています。

たとえば、次のストアド プロシージャは、a) 拡張プロパティが既に存在するかどうかを確認し、b) 存在する場合は削除し、c) 追加します。

これにより、拡張プロパティを追加する単純なワンライナーのクリーンな再実行可能な (自動ビルド プロセスにとって重要な) スクリプトを維持できます (列レベルのみ - これを変更するか、他のオブジェクト タイプに対して同様のスクリプトを作成する必要があります)。 )。

sproc は次のとおりです。

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 に答える