Có ai đã viết hoặc biết truy vấn, sẽ tìm và thả tất cả các thuộc tính mở rộng (Cơ sở dữ liệu, bảng và cấp cột) có tên đã cho không? Tôi biết tôi có thể thả một thuộc tính mở rộng qua proc được lưu trữ sp_dropextendedproperty.Truy vấn để thả tất cả các thuộc tính mở rộng có chứa một tên nhất định
Trả lời
Liên kết đến nội dung nào đó có thể hữu ích cho bạn. http://social.msdn.microsoft.com/Forums/en/transactsql/thread/747cb7c2-b176-4f75-9d92-c5a9360b4ed3
Tạo báo cáo sp_dropextendedproperty exec động cho mỗi thuộc tính được tìm thấy.
Đối với tôi, tập lệnh trong liên kết của Mikael không tạo ra các giọt cho tất cả các thuộc tính mở rộng, ví dụ: cho các lượt xem. Những gì đã làm việc là một kịch bản mà Jamie Thomson đã tạo ra, mà bạn có thể tải về từ article này.
Tôi đã dán kịch bản của mình ở đây (đầy đủ với sự thừa nhận, trong trường hợp bài viết được lấy ra):
/*
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'
Trên kịch bản đề cập không hỗ trợ chức năng này, vì vậy tôi đã thêm nó vào kịch bản:
/*
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 không tồn tại. Bạn đang chạy phiên bản SQLServer nào? – TheLegendaryCopyCoder
Câu trả lời trước không hoạt động chính xác cho tôi - chúng không xóa thuộc tính mở rộng cho trình kích hoạt cơ sở dữ liệu, bộ sưu tập hoặc chỉ mục lược đồ xml. Tôi tìm thấy điều này script to delete extended properties (nhận xét được dịch từ tiếng Nhật bằng Google dịch), đã hoạt động hoàn hảo cho tôi.
Cảnh báo: này thực loại bỏ tất cả các thuộc tính mở rộng, chứ không phải xuất ra một truy vấn để làm như vậy, như câu trả lời trước làm. Thay vào đó, thay đổi hành vi để xuất truy vấn, hãy thay đổi từng số EXEC (@sql)
thành 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. chọn tất cả các nút xml chứa một thuộc tính nhất định
- 2. Thả tất cả các thuộc tính mở rộng trên SQL Server
- 3. Thả tất cả các bảng có tên bắt đầu bằng một chuỗi nhất định
- 4. Truy cập vào tất cả các hạt đậu mùa xuân thuộc một loại nhất định
- 5. Nhận tất cả các thuộc tính đã đánh dấu một thuộc tính nhất định
- 6. SPARQL truy vấn để lấy tất cả các đối tượng và thuộc tính
- 7. Cách tìm tất cả các tệp có phần mở rộng nhất định trên Android?
- 8. Tìm tất cả các tệp có phần mở rộng nhất định trong Unix?
- 9. Tên thuộc tính jQuery chứa
- 10. Truy vấn các trang Wikipedia có các thuộc tính
- 11. Sql truy vấn để tìm tất cả các cấp dưới thuộc một đơn vượt trội
- 12. Tìm tất cả các lớp có thuộc tính cụ thể
- 13. Cụm từ thông dụng để tìm tất cả các tên bảng trong một truy vấn
- 14. Truy vấn XDocument với thuộc tính xmlns (không gian tên)
- 15. Làm cách nào để xác nhận một phần tử có thể lặp lại chứa một thuộc tính nhất định?
- 16. Tên truy vấn và thuộc tính XPath 1
- 17. Xpath - Cách lấy tất cả tên thuộc tính và giá trị của một phần tử
- 18. Thuộc tính mở rộng jQuery
- 19. Truy lục tất cả các thuộc tính của một liên kết của một mô hình AR?
- 20. Xóa tất cả các thuộc tính
- 21. Cắt tất cả các thuộc tính chuỗi
- 22. Có thể sao chép tất cả các thuộc tính của một điều khiển nhất định không? (C# window forms)
- 23. Oracle: Truy vấn SQL để tìm tất cả các trình kích hoạt thuộc về các bảng?
- 24. Thả tất cả các bảng ngoại trừ một trong MySql
- 25. Truy vấn Hibernate: Bộ có chứa một đối tượng nhất định không?
- 26. Đặt thuộc tính VerticalAlignment cho tất cả các điều khiển
- 27. Truy vấn tất cả các giá trị duy nhất của một trường bằng Elasticsearch
- 28. Tính tất cả các khả năng phụ chuỗi có chiều dài nhất định (C#)
- 29. Làm cách nào để có danh sách tất cả các tệp có phần mở rộng nhất định từ một thư mục cụ thể?
- 30. Jquery Accordion Mở rộng Tất cả Thu gọn Tất cả
Điều này hoàn toàn phù hợp với tôi, cảm ơn. –
Tập lệnh này cần được cập nhật để đảm bảo rằng tất cả các bảng hệ thống đều có tiền tố là "sys". để làm cho nó hoạt động trên SQL Server 2008 R2 Enterprise. – TheLegendaryCopyCoder