주어진 이름을 가진 모든 확장 속성 (데이터베이스, 테이블 및 열 수준)을 찾고 삭제하는 사람이 있습니까? sp_dropextendedproperty 저장된 프로 시저를 통해 하나의 확장 된 속성을 삭제할 수 있습니다.특정 이름을 포함하는 모든 확장 속성을 삭제할 쿼리
답변
유용한 링크가 있습니다. http://social.msdn.microsoft.com/Forums/en/transactsql/thread/747cb7c2-b176-4f75-9d92-c5a9360b4ed3
발견 된 각 속성에 대해 동적 exec sp_dropextendedproperty 문을 생성합니다.
나를 위해 Mikael의 링크에있는 스크립트는 모든 확장 속성 (예 : 전망을위한 그것들. Jamie Thomson이 만든 스크립트는 무엇 이었습니까? article에서 다운로드 할 수 있습니다.
내가 (승인과 함께 전체에있는 문서 제거에-경우) 여기에 자신의 스크립트를 붙여 넣은 : 언급 한 스크립트 위
/*
This script will generate calls to sp_dropextendedproperty for every
extended property that exists in your database.
Actually, a caveat: I don't promise that it will catch each and every
extended property that exists, but I'm confident it will catch most of them!
It is based on this:
http://blog.hongens.nl/2010/02/25/drop-all-extended-properties-in-a-mssql-database/
by Angelo Hongens.
Also had lots of help from this:
http://www.sqlservercentral.com/articles/Metadata/72609/
by Adam Aspin
Adam actually provides a script at that link to do something very similar
but when I ran it I got an error:
Msg 468, Level 16, State 9, Line 78
Cannot resolve the collation conflict between "Latin1_General_100_CS_AS" and "Latin1_General_CI_AS" in the equal to operation.
So I put together this version instead.
Use at your own risk.
Jamie Thomson
2012-03-25
*/
/*Are there any extended properties? Let's take a look*/
select *,OBJECT_NAME(major_id) from sys.extended_properties xp
/*Now let's generate sp_dropextendedproperty statements for all of them.*/
--tables
set nocount on;
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.tables t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--columns
select 'EXEC sp_dropextendedproperty
@name = '''+sys.extended_properties.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(extended_properties.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(extended_properties.major_id) + '''
,@level2type = ''column''
,@level2name = ''' + columns.name + ''''
from sys.extended_properties
join sys.columns
on columns.object_id = extended_properties.major_id
and columns.column_id = extended_properties.minor_id
where extended_properties.class_desc = 'OBJECT_OR_COLUMN'
and extended_properties.minor_id > 0
union
--check constraints
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(cc.parent_object_id) + '''
,@level2type = ''constraint''
,@level2name = ''' + cc.name + ''''
from sys.extended_properties xp
join sys.check_constraints cc on xp.major_id = cc.object_id
union
--check constraints
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(cc.parent_object_id) + '''
,@level2type = ''constraint''
,@level2name = ''' + cc.name + ''''
from sys.extended_properties xp
join sys.default_constraints cc on xp.major_id = cc.object_id
union
--views
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''view''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.views t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--sprocs
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''procedure''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.procedures t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--FKs
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(cc.parent_object_id) + '''
,@level2type = ''constraint''
,@level2name = ''' + cc.name + ''''
from sys.extended_properties xp
join sys.foreign_keys cc on xp.major_id = cc.object_id
union
--PKs
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''TABLE'', @level1name = [' + TBL.name + '] , @level2type = ''CONSTRAINT'', @level2name = [' + SKC.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.tables TBL
INNER JOIN sys.schemas SCH
ON TBL.schema_id = SCH.schema_id
INNER JOIN sys.extended_properties SEP
INNER JOIN sys.key_constraints SKC
ON SEP.major_id = SKC.object_id
ON TBL.object_id = SKC.parent_object_id
WHERE SKC.type_desc = N'PRIMARY_KEY_CONSTRAINT'
union
--Table triggers
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''TABLE'', @level1name = [' + TBL.name + '] , @level2type = ''TRIGGER'', @level2name = [' + TRG.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.tables TBL
INNER JOIN sys.triggers TRG
ON TBL.object_id = TRG.parent_id
INNER JOIN sys.extended_properties SEP
ON TRG.object_id = SEP.major_id
INNER JOIN sys.schemas SCH
ON TBL.schema_id = SCH.schema_id
union
--UDF params
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''FUNCTION'', @level1name = [' + OBJ.name + '] , @level2type = ''PARAMETER'', @level2name = [' + PRM.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.objects OBJ
ON SEP.major_id = OBJ.object_id
INNER JOIN sys.schemas SCH
ON OBJ.schema_id = SCH.schema_id
INNER JOIN sys.parameters PRM
ON SEP.major_id = PRM.object_id
AND SEP.minor_id = PRM.parameter_id
WHERE SEP.class_desc = N'PARAMETER'
AND OBJ.type IN ('FN', 'IF', 'TF')
union
--sp params
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''PROCEDURE'', @level1name = [' + SPR.name + '] , @level2type = ''PARAMETER'', @level2name = [' + PRM.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.procedures SPR
ON SEP.major_id = SPR.object_id
INNER JOIN sys.schemas SCH
ON SPR.schema_id = SCH.schema_id
INNER JOIN sys.parameters PRM
ON SEP.major_id = PRM.object_id
AND SEP.minor_id = PRM.parameter_id
WHERE SEP.class_desc = N'PARAMETER'
union
--DB
SELECT
'EXEC sys.sp_dropextendedproperty @name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
WHERE class_desc = N'DATABASE'
union
--schema
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.schemas SCH
ON SEP.major_id = SCH.schema_id
WHERE SEP.class_desc = N'SCHEMA'
union
--DATABASE_FILE
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''FILEGROUP'', @level0name = [' + DSP.name + '], @level1type = ''LOGICAL FILE NAME'', @level1name = ' + DBF.name + ' ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.database_files DBF
ON SEP.major_id = DBF.file_id
INNER JOIN sys.data_spaces DSP
ON DBF.data_space_id = DSP.data_space_id
WHERE SEP.class_desc = N'DATABASE_FILE'
union
--filegroup
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''FILEGROUP'', @level0name = [' + DSP.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.data_spaces DSP
ON SEP.major_id = DSP.data_space_id
WHERE DSP.type_desc = 'ROWS_FILEGROUP'
이 기능을 지원하지 않는, 그래서 스크립트에 추가 :
/*
This script will generate calls to sp_dropextendedproperty for every
extended property that exists in your database.
Actually, a caveat: I don't promise that it will catch each and every
extended property that exists, but I'm confident it will catch most of them!
It is based on this:
http://blog.hongens.nl/2010/02/25/drop-all-extended-properties-in-a-mssql-database/
by Angelo Hongens.
Also had lots of help from this:
http://www.sqlservercentral.com/articles/Metadata/72609/
by Adam Aspin
Adam actually provides a script at that link to do something very similar
but when I ran it I got an error:
Msg 468, Level 16, State 9, Line 78
Cannot resolve the collation conflict between "Latin1_General_100_CS_AS" and "Latin1_General_CI_AS" in the equal to operation.
So I put together this version instead.
Use at your own risk.
Jamie Thomson
2012-03-25
*/
/*Are there any extended properties? Let's take a look*/
select *,OBJECT_NAME(major_id) from sys.extended_properties xp
/*Now let's generate sp_dropextendedproperty statements for all of them.*/
--tables
set nocount on;
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.tables t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--columns
select 'EXEC sp_dropextendedproperty
@name = '''+sys.extended_properties.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(extended_properties.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(extended_properties.major_id) + '''
,@level2type = ''column''
,@level2name = ''' + columns.name + ''''
from sys.extended_properties
join sys.columns
on columns.object_id = extended_properties.major_id
and columns.column_id = extended_properties.minor_id
where extended_properties.class_desc = 'OBJECT_OR_COLUMN'
and extended_properties.minor_id > 0
union
--check constraints
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(cc.parent_object_id) + '''
,@level2type = ''constraint''
,@level2name = ''' + cc.name + ''''
from sys.extended_properties xp
join sys.check_constraints cc on xp.major_id = cc.object_id
union
--check constraints
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(cc.parent_object_id) + '''
,@level2type = ''constraint''
,@level2name = ''' + cc.name + ''''
from sys.extended_properties xp
join sys.default_constraints cc on xp.major_id = cc.object_id
union
--views
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''view''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.views t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--sprocs
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''procedure''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.procedures t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--functions
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''function''
,@level1name = ''' + object_name(xp.major_id) + ''''
from sys.extended_properties xp
join sys.functions t on xp.major_id = t.object_id
where xp.class_desc = 'OBJECT_OR_COLUMN'
and xp.minor_id = 0
union
--FKs
select 'EXEC sp_dropextendedproperty
@name = '''+xp.name+'''
,@level0type = ''schema''
,@level0name = ''' + object_schema_name(xp.major_id) + '''
,@level1type = ''table''
,@level1name = ''' + object_name(cc.parent_object_id) + '''
,@level2type = ''constraint''
,@level2name = ''' + cc.name + ''''
from sys.extended_properties xp
join sys.foreign_keys cc on xp.major_id = cc.object_id
union
--PKs
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''TABLE'', @level1name = [' + TBL.name + '] , @level2type = ''CONSTRAINT'', @level2name = [' + SKC.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.tables TBL
INNER JOIN sys.schemas SCH
ON TBL.schema_id = SCH.schema_id
INNER JOIN sys.extended_properties SEP
INNER JOIN sys.key_constraints SKC
ON SEP.major_id = SKC.object_id
ON TBL.object_id = SKC.parent_object_id
WHERE SKC.type_desc = N'PRIMARY_KEY_CONSTRAINT'
union
--Table triggers
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''TABLE'', @level1name = [' + TBL.name + '] , @level2type = ''TRIGGER'', @level2name = [' + TRG.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.tables TBL
INNER JOIN sys.triggers TRG
ON TBL.object_id = TRG.parent_id
INNER JOIN sys.extended_properties SEP
ON TRG.object_id = SEP.major_id
INNER JOIN sys.schemas SCH
ON TBL.schema_id = SCH.schema_id
union
--UDF params
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''FUNCTION'', @level1name = [' + OBJ.name + '] , @level2type = ''PARAMETER'', @level2name = [' + PRM.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.objects OBJ
ON SEP.major_id = OBJ.object_id
INNER JOIN sys.schemas SCH
ON OBJ.schema_id = SCH.schema_id
INNER JOIN sys.parameters PRM
ON SEP.major_id = PRM.object_id
AND SEP.minor_id = PRM.parameter_id
WHERE SEP.class_desc = N'PARAMETER'
AND OBJ.type IN ('FN', 'IF', 'TF')
union
--sp params
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '], @level1type = ''PROCEDURE'', @level1name = [' + SPR.name + '] , @level2type = ''PARAMETER'', @level2name = [' + PRM.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.procedures SPR
ON SEP.major_id = SPR.object_id
INNER JOIN sys.schemas SCH
ON SPR.schema_id = SCH.schema_id
INNER JOIN sys.parameters PRM
ON SEP.major_id = PRM.object_id
AND SEP.minor_id = PRM.parameter_id
WHERE SEP.class_desc = N'PARAMETER'
union
--DB
SELECT
'EXEC sys.sp_dropextendedproperty @name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
WHERE class_desc = N'DATABASE'
union
--schema
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''SCHEMA'', @level0name = [' + SCH.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.schemas SCH
ON SEP.major_id = SCH.schema_id
WHERE SEP.class_desc = N'SCHEMA'
union
--DATABASE_FILE
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''FILEGROUP'', @level0name = [' + DSP.name + '], @level1type = ''LOGICAL FILE NAME'', @level1name = ' + DBF.name + ' ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.database_files DBF
ON SEP.major_id = DBF.file_id
INNER JOIN sys.data_spaces DSP
ON DBF.data_space_id = DSP.data_space_id
WHERE SEP.class_desc = N'DATABASE_FILE'
union
--filegroup
SELECT
'EXEC sys.sp_dropextendedproperty @level0type = N''FILEGROUP'', @level0name = [' + DSP.name + '] ,@name = ''' + REPLACE(CAST(SEP.name AS NVARCHAR(300)),'''','''''') + ''''
FROM sys.extended_properties SEP
INNER JOIN sys.data_spaces DSP
ON SEP.major_id = DSP.data_space_id
WHERE DSP.type_desc = 'ROWS_FILEGROUP'
sys.functions가 없습니다. 실행중인 SQLServer의 버전은 무엇입니까? – TheLegendaryCopyCoder
이전 답변이 데이터베이스 트리거, xml 스키마 컬렉션 또는 인덱스의 확장 속성을 제거하지 못했습니다. 나는 이것을 찾았다 script to delete extended properties (번역은 일본어로 Google 번역을 사용).
경고 :이 실제로 오히려 이전의 답변처럼, 그렇게 할 쿼리를 출력보다 확장 된 속성을 모두 제거합니다. 대신 쿼리를 출력하도록 동작을 변경하려면 각각 EXEC (@sql)
을 PRINT (@sql)
으로 변경하십시오.
DECLARE @prop_name sysname
DECLARE @schema_name sysname
DECLARE @name sysname
DECLARE @name2 sysname
DECLARE @sql nvarchar(max)
-- Delete extended properties database
DECLARE PROP_CURSOR CURSOR FOR
SELECT name FROM sys.extended_properties where class = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'USE [master];EXEC ' + QUOTENAME(DB_NAME()) + N'.sys.sp_dropextendedproperty @name=N''' + @prop_name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Remove schema extension property
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(s.schema_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.schemas s ON s.schema_id = ep.major_id
WHERE ep.class = 3
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of a file group
DECLARE PROP_CURSOR CURSOR FOR
SELECT f.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.filegroups f ON f.data_space_id = ep.major_id
WHERE ep.class = 20
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''FILEGROUP'',' +
N'@level0name=N''' + @name + ''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of a file
DECLARE PROP_CURSOR CURSOR FOR
SELECT f.name, sf.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.filegroups f ON f.data_space_id = ep.major_id
INNER JOIN sys.sysfiles sf ON sf.groupid = f.data_space_id
WHERE ep.class = 22
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''FILEGROUP'',' +
N'@level0name=N''' + @name + ''', ' +
N'@level1type=N''Logical File Name'',' +
N'@level1name=N''' + @name2 + ''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Remove the expansion properties of the XML schema collection
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(x.schema_id), x.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.xml_schema_collections x ON x.xml_collection_id = ep.major_id
WHERE ep.class = 10
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''XML SCHEMA COLLECTION'',' +
N'@level1name=N''' + @name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of a table
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(t.schema_id), OBJECT_NAME(t.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.tables t ON t.object_id = ep.major_id
WHERE ep.class = 1 AND ep.minor_id = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''TABLE'',' +
N'@level1name=N''' + @name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of view
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(v.schema_id), OBJECT_NAME(v.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.views v ON v.object_id = ep.major_id
WHERE ep.class = 1 AND ep.minor_id = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''VIEW'',' +
N'@level1name=N''' + @name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the index
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), OBJECT_NAME(o.object_id), i.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id AND o.type IN ('U')
INNER JOIN sys.indexes i ON i.object_id = ep.major_id AND i.index_id = ep.minor_id
WHERE ep.class = 7
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''TABLE'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''INDEX'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the index of the view
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), OBJECT_NAME(o.object_id), i.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id AND o.type IN ('V')
INNER JOIN sys.indexes i ON i.object_id = ep.major_id AND i.index_id = ep.minor_id
WHERE ep.class = 7
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''VIEW'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''INDEX'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the function
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), OBJECT_NAME(o.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id AND o.type IN ('FN', 'TF')
WHERE ep.class = 1 AND ep.minor_id = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''FUNCTION'',' +
N'@level1name=N''' + @name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the parameters of the function
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), OBJECT_NAME(o.object_id), p.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id AND o.type IN ('FN', 'TF')
INNER JOIN sys.parameters p ON p.object_id = ep.major_id AND p.parameter_id = ep.minor_id
WHERE ep.class = 2
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''FUNCTION'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''PARAMETER'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the stored procedure
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(p.schema_id), OBJECT_NAME(p.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.procedures p ON p.object_id = ep.major_id
WHERE ep.class = 1 AND ep.minor_id = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''PROCEDURE'',' +
N'@level1name=N''' + @name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the parameters of a stored procedure
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), OBJECT_NAME(o.object_id), p.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id AND o.type = 'P'
INNER JOIN sys.parameters p ON p.object_id = ep.major_id AND p.parameter_id = ep.minor_id
WHERE ep.class = 2
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', '+
N'@level1type=N''PROCEDURE'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''PARAMETER'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of DDL trigger
DECLARE PROP_CURSOR CURSOR FOR
SELECT t.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.triggers t ON t.object_id = ep.major_id AND t.parent_class = 0
WHERE ep.class = 1 AND ep.minor_id = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @name, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''TRIGGER'',' +
N'@level0name=N''' + @name + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @name, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of DML trigger
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), p.name, OBJECT_NAME(o.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id AND o.type = 'TR'
INNER JOIN sys.objects p ON o.parent_object_id = p.object_id
WHERE ep.class = 1
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', ' +
N'@level1type=N''TABLE'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''TRIGGER'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- Delete extended properties of the constraint
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(c.schema_id), OBJECT_NAME(c.parent_object_id), OBJECT_NAME(c.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.check_constraints c ON c.object_id = ep.major_id
WHERE ep.class = 1 and ep.minor_id = 0
UNION
SELECT SCHEMA_NAME(c.schema_id), OBJECT_NAME(c.parent_object_id), OBJECT_NAME(c.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.default_constraints c ON c.object_id = ep.major_id
WHERE ep.class = 1 and ep.minor_id = 0
UNION
SELECT SCHEMA_NAME(c.schema_id), OBJECT_NAME(c.parent_object_id), OBJECT_NAME(c.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.foreign_keys c ON c.object_id = ep.major_id
WHERE ep.class = 1 and ep.minor_id = 0
UNION
SELECT SCHEMA_NAME(c.schema_id), OBJECT_NAME(c.parent_object_id), OBJECT_NAME(c.object_id), ep.name
FROM sys.extended_properties ep
INNER JOIN sys.key_constraints c ON c.object_id = ep.major_id
WHERE ep.class = 1 and ep.minor_id = 0
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', ' +
N'@level1type=N''TABLE'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''CONSTRAINT'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
-- To delete an extended property of the column
DECLARE PROP_CURSOR CURSOR FOR
SELECT SCHEMA_NAME(o.schema_id), OBJECT_NAME(o.object_id), c.name, ep.name
FROM sys.extended_properties ep
INNER JOIN sys.objects o ON o.object_id = ep.major_id
INNER JOIN sys.columns c ON c.object_id = o.object_id AND c.column_id = ep.minor_id
WHERE ep.class = 1
OPEN PROP_CURSOR
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = N'EXEC sys.sp_dropextendedproperty ' +
N'@name=N''' + @prop_name + N''',' +
N'@level0type=N''SCHEMA'',' +
N'@level0name=N''' + @schema_name + ''', ' +
N'@level1type=N''TABLE'',' +
N'@level1name=N''' + @name + N''', ' +
N'@level2type=N''COLUMN'',' +
N'@level2name=N''' + @name2 + N''''
EXEC (@sql)
FETCH NEXT FROM PROP_CURSOR
INTO @schema_name, @name, @name2, @prop_name
END
CLOSE PROP_CURSOR
DEALLOCATE PROP_CURSOR
- 1. 레일에 특정 속성을 포함하는 모든 레코드 찾기
- 2. SQL Server 2005에서 특정 열을 포함하는 모든 테이블을 나열하도록 쿼리
- 3. 특정 자손을 포함하는 요소를 찾기위한 Xpath 쿼리
- 4. 대문자로 이름이없는 모든 테이블 이름을 선택하는 쿼리
- 5. Jquery 특정 속성을 가진 모든 객체를 선택하십시오.
- 6. PHP DOMXPath은 - 표현은 특정 속성을 가진 입력을 포함하는 TR을 선택합니다
- 7. 속성을 사용하여 String 클래스 확장?
- 8. 디렉토리에 파일 이름을 포함하는 배열 만들기
- 9. 특정 이름을 가진 모든 파일을 선택하고 C에서 제외 #
- 10. ItemName을 지정하지 않고 Amazon SimpleDB에서 속성을 삭제할 수 있습니까?
- 11. 조건 식을 사용하여 특정 문자를 포함하는 모든 엔터티를 검색 하시겠습니까?
- 12. 확장 가능한 데이터베이스 쿼리
- 13. 속성을 포함하고 부모의 부모가 다른 속성을 포함하는 XPath 요소
- 14. ZenCoding는 CSS-속성을 확장 잘못
- 15. 특정 개수의 SQL 쿼리
- 16. DataContext에서 삭제할 간단한 LINQ 쿼리 ID == ID
- 17. 특정 노드에서 두 단계 떨어진 모든 노드를 찾으려면 쿼리
- 18. jQuery에 두 가지 속성을 포함하는 방법
- 19. 프롤로그의 목록으로 쿼리 확장
- 20. 특정 열을 포함하지 않는 모든 테이블을 반환하는 쿼리
- 21. 특정 임의의 이름을 선택하는 방법
- 22. SQLite - 2 개의 테이블을 포함하는 쿼리
- 23. ClearCase의 특정 속성이있는 레이블 쿼리
- 24. 특정 시간에만 발생한 쿼리 트랜잭션
- 25. 모든 테이블 이름과 열 이름을 가져 오도록 쿼리
- 26. SQL 쿼리 속기 모든
- 27. 특정 값의 CSS ("color")로 모든 요소의 속성을 선택하고 변경하십시오.
- 28. 특정 속성을 가진 전역 환경에서 모든 개체 당기기
- 29. SVN에서 특정 리비전을 삭제할 수 있습니까?
- 30. 특정 테이블의 모든 열의 이름을 배열로 반환하는 PHP 함수
이것은 나를 위해 완벽하게 일했습니다. 감사합니다. –
이 스크립트는 모든 시스템 테이블 앞에 "sys"가 붙도록 업데이트해야합니다. SQL Server 2008 R2 Enterprise에서 작동하도록하십시오. – TheLegendaryCopyCoder