risposta

3

uso questo script

EXEC sys.sp_dropextendedproperty 
    @name =N'MS_Description', 
    @level0type = N'SCHEMA', 
    @level0name = N'dbo', 
    @level1type = N'TABLE', 
    @level1name = N'ActivityEventRecipient'; 
GO 

Fonte: drop extended property

17

Se si desidera uno script che scenderà tutto Proprietà estese in un colpo solo, quindi utilizzare uno script creato da Jamie Thomson che genererà gocce per tutte le proprietà estese. È possibile scaricarlo da questo article.

Ho incollato suo script qui (in pieno con riconoscimenti nel caso l'articolo viene rimosso):

/* 
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' 
union 
-- INDEX 
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 = ''index'' 
,@level2name = ''' + indexes.name + '''' 
from sys.extended_properties 
join sys.indexes 
on indexes.object_id = extended_properties.major_id 
and indexes.index_id = extended_properties.minor_id 
where extended_properties.class_desc = 'INDEX' 
and extended_properties.minor_id > 0 
+0

Alla fine ho funzionato, ma ho dovuto a) cancellare i diagrammi del database dal database, e b) lo script presuppone che tutte le proprietà delle colonne siano sulle tabelle, ho avuto alcune viste su cui ho dovuto modificare lo script. –

+0

funziona, ma solo una nota, proverà a rimuovere le proprietà estese di alcuni sistemi sp, quindi controlla alcuni comandi all'inizio, quindi esegui lo script. – ashubuntu

1

Ho provato a eseguire gli script e nulla sembrava funzionare per me. tuttavia ho trovato che avrei potuto eliminare le proprietà estese andando ai miei tabelle/viste in Object Explorer e facendo per seguenti:

  • clic destro sulla tabella/vista in Esplora oggetti, selezionare Proprietà
  • selezionare Proprietà estese da riquadro a sinistra
  • Selezionare le proprietà estese e fare clic su Elimina in basso a destra della finestra