This script erases everything in the master database that is not Microsoft-shipped. Be careful: some user objects belong in the master database (database triggers, security objects, for example). Backing up the master database first would be a prudent step.
-- Drops all user objects that have been accidentally created in the master database.
USE master
DECLARE @sName sysname
DECLARE @sTypeDesc NVARCHAR(1024)
DECLARE @sType NVARCHAR(1024)
DECLARE @nScore INT
DECLARE @sSql NVARCHAR(1024)
DECLARE TheCursor CURSOR FOR
SELECT name, type_desc
FROM sys.objects
WHERE is_ms_shipped = 0
OPEN TheCursor
FETCH NEXT FROM TheCursor
INTO @sName, @sTypeDesc
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sType = REVERSE(@sTypeDesc)
SET @nScore = CHARINDEX('_', @sType)
SET @sType = SUBSTRING(@sType, 0, @nScore)
SET @sType = REVERSE(@sType)
SET @sSql = 'DROP ' + @sType + ' ' + @sName
RAISERROR('%s', 10, 1, @sSql) WITH NOWAIT
EXEC sp_sqlexec @sSql
FETCH NEXT FROM TheCursor
INTO @sName, @sTypeDesc
END
CLOSE TheCursor
DEALLOCATE TheCursor
PRINT 'Done.'
1 comments:
If your database has multiple schemas other than dbo or whatever your logged in user defaults to, modify the cursor as follows
SELECT s.name + '.' + o.name, o.type_desc
FROM sys.objects o
join sys.schemas s on s.schema_id=o.schema_id
WHERE o.is_ms_shipped = 0
Post a Comment