Drop all DB objects

--drop all db objects

SET NOCOUNT ON

GO

-- storage SQL statement to be executed

DECLARE @sql_str Nvarchar(4000)

SELECT @sql_str = ''

--loop dropped DB objects

WHILE 1 = 1

BEGIN

  SELECT @str_sql = @str_sql + 'drop ' + (CASE t1.type

                     WHEN 'U' THEN 'table'

                     WHEN 'FN' THEN 'function'

                     WHEN 'SO' THEN 'sequence'

                     WHEN 'P' THEN 'procedure'

                     WHEN 'UT' THEN 'type'

                     WHEN 'SQ' THEN 'QUEUE'

                     WHEN 'FS' THEN 'function'

                     WHEN 'TF' THEN 'function'

                     WHEN 'AS' THEN 'assembly'

                     WHEN 'V' THEN 'view'

                     WHEN 'D' THEN 'Default'

                     WHEN 'UQ' THEN 'Unique'

                     END) + ‘ ‘ + t1.name + ' '

  FROM ( SELECT name, type FROM sys.all_objects WHERE type IN ('U','FN','SO','FS','TF','V') AND SCHEMA_NAME(schema_id) = 'dbo')

      UNION ALL 

      SELECT NAME, 'UT' AS type FROM sys.types WHERE SCHEMA_NAME(schema_id) = 'dbo'

      UNION ALL 

      SELECT NAME, 'UT' AS type FROM sys.assemblies WHERE SCHEMA_NAME(principal_id) = 'dbo'

      ) t1 

  ORDER BY NEWID()

  --IF @sql_str = '' , no objects to be dropped , otherwise continue.

  IF @sql_str = ''

  BEGIN

    break

  END

  BEGIN TRY

    -- EXEC(@sql_str)

    EXECUTE sp_executesql @sql_str

  END TRY

  BEGIN CATCH

  END CATCH

  SET @sql_str = ''

END

GO

posted on 2018-07-17 16:14  5w  阅读(111)  评论(0)    收藏  举报

导航