Darrell Hawley: Home Page

Wednesday, October 11, 2006

Extended Property Manipulation Script

Interesting bit of T-SQL here. I wanted to create a script that would allow me to quickly manipulate extended properties in a SQL Server Express database, so I came up with the following. Note that this has been tested on SQL Server Express only, so I can't guarantee you will be able to use this in any other version of SQL Server.

declare @Property nvarchar(20), --Name of extended property to add
@PropertyVal nvarchar(100), -- value of extended property
@Table nvarchar(50), -- table that will be getting extended property
@DropOnly bit -- if set to 1, then extended property will be dropped and not readded

set @Property = 'GenerateObject'
set @PropertyVal = '1'
set @Table = 'User'
set @DropOnly = 0

-- if the property we are looking for already exists, drop it.
if (Exists (select * from ::fn_listextendedproperty (@Property, N'SCHEMA', N'dbo', N'TABLE', @Table, default, default)))
Begin
exec sys.sp_dropextendedproperty @name=@Property,
@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE',
@level1name=@Table
End

-- if the DropOnly flag is not set...
if @DropOnly = 0
Begin
-- add the extendedproperty along with the appropriate value
EXEC sys.sp_addextendedproperty @name=@Property, @value=@PropertyVal ,
@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE',
@level1name=@Table
End

-- no matter what happened above, search for the property. if DropOnly was set, nothing will be returned.
select * from ::fn_listextendedproperty (@Property, N'SCHEMA', N'dbo', N'TABLE', @Table, default, default)

-- list all tables with this property
select * from ::fn_listextendedproperty (@Property, N'SCHEMA', N'dbo', N'TABLE', default, default, default)

0 Comments:

Post a Comment

<< Home