删除SqlServer数据表和列的描述

最近项目有部署到私有云的计划。为了最后的尊严,不能把完整的数据库给对方反向工程了。需要把数据表和列的描述给删掉。

直接上代码,用的游标处理方式。

 1 --表描述
 2 DECLARE @tn NVARCHAR(50)
 3 DECLARE c CURSOR FOR SELECT t.name FROM sys.tables AS t INNER JOIN sys.extended_properties AS p ON t.[object_id]=p.major_id WHERE t.[type]='U' AND p.minor_id = 0 AND p.[name] = N'MS_Description' ORDER BY t.name
 4 OPEN c
 5 FETCH NEXT FROM c INTO @tn
 6 WHILE @@FETCH_STATUS=0
 7 BEGIN
 8     EXEC sys.sp_dropextendedproperty @name = N'MS_Description' ,@level0type = N'SCHEMA', @level0name = N'gxjt' , @level1type = N'TABLE' ,@level1name = @tn;
 9     FETCH NEXT FROM c INTO @tn
10 END
11 CLOSE c
12 DEALLOCATE c
13 GO
14 
15 --列描述
16 DECLARE @tn NVARCHAR(50),@cn NVARCHAR(50)
17 DECLARE c CURSOR FOR SELECT t.name AS tn,l.name AS cn FROM sys.[columns] AS l INNER JOIN sys.extended_properties AS p ON l.[object_id]=p.major_id AND l.column_id=p.minor_id INNER JOIN sys.tables AS t ON l.[object_id]=t.[object_id] WHERE t.[type]='U' AND p.[name] = N'MS_Description' ORDER BY t.name,l.name
18 OPEN c
19 FETCH NEXT FROM c INTO @tn,@cn
20 WHILE @@FETCH_STATUS=0
21 BEGIN
22     EXEC sys.sp_dropextendedproperty @name = N'MS_Description' ,@level0type = N'SCHEMA', @level0name = N'gxjt' , @level1type = N'TABLE' ,@level1name = @tn,@level2type = N'COLUMN',@level2name=@cn;
23     FETCH NEXT FROM c INTO @tn,@cn
24 END
25 CLOSE c
26 DEALLOCATE c
27 GO

 

posted on 2020-08-05 12:07  飘渺冰血  阅读(223)  评论(0编辑  收藏  举报