понедельник, 30 августа 2010 г.

Чистка БД в SQL Server

1. Удаление временных таблиц
SELECT 'drop table [' + s2.name + '].[' + s.name + ']' FROM sysobjects s JOIN sysusers s2 ON s.uid = s2.uid WHERE (s.name LIKE 'stratum_inter%' OR s.name LIKE 'map_production%') OR s2.name not in('public','dbo','guest','INFORMATION_SCHEMA','sys','sqladmin','db_owner','db_accessadmin','db_securityadmin','db_ddladmin','db_backupoperator','db_datareader','db_datawriter','db_denydatareader','db_denydatawriter')  


2. Удаление Пользовательских схем
SELECT 'DROP SCHEMA ['+name +']'  FROM sys.schemas AS s WHERE s.name like 'CORP%' or
s.name like 'RNTC%' or
s.name like 'BUILTIN%' or
s.name not in('public','dbo','guest','INFORMATION_SCHEMA','sys','sqladmin','db_owner','db_accessadmin','db_securityadmin','db_ddladmin','db_backupoperator','db_datareader','db_datawriter','db_denydatareader','db_denydatawriter'



3. Удаление пользователей базы
--так более праввильно SELECT DISTINCT 'DROP USER [' + o.name + ']' FROM dbo.sysusers o WHERE o.name like 'CORP%' or
o.name like 'RNTC%' or
o.name like 'BUILTIN%' or
o.name not in('public','dbo','guest','INFORMATION_SCHEMA','sys','sqladmin','db_owner','db_accessadmin','db_securityadmin','db_ddladmin','db_backupoperator','db_datareader','db_datawriter','db_denydatareader','db_denydatawriter') --если не сработает, то можно попробовать так SELECT DISTINCT 'EXEC sp_dropuser ''' + o.name + '''' FROM dbo.sysusers o WHERE o.name like 'CORP%' or
o.name like 'RNTC%' or
o.name like 'BUILTIN%'



Как посмотреть к какой схеме привязан пользователь
SELECT s.name AS [schema_name], dp1.name AS [owner_name] FROM sys.schemas AS s INNER JOIN sys.database_principals AS dp1 ON dp1.principal_id = s.principal_id

Количество объектов в БД SQL Server

--Для того чтобы узнать сколько различных объектов содержит ваша база данных, можно запустить следующий скрипт:

--Для того чтобы узнать сколько различных объектов содержит ваша база данных, можно запустить следующий скрипт:

SELECT 'Системных Таблиц' AS [Name],COUNT([id]) AS [COUNT]                       , 1 AS [ORDER] FROM [dbo].[sysobjects] WHERE OBJECTPROPERTY([id],'IsSystemTable') = 1 
UNION
SELECT 'Таблиц' AS [Name],COUNT([id]) AS [COUNT]                                  , 2 AS [ORDER] FROM [dbo].[sysobjects] WHERE OBJECTPROPERTY([id],'IsTable') = 1 
UNION
SELECT 'Пользовательских Таблиц' AS [Name],COUNT([id]) AS [COUNT] , 3 AS [ORDER] FROM [dbo].[sysobjects] WHERE OBJECTPROPERTY([id], 'IsUserTable') =1 
UNION
SELECT 'Кол-во таблиц, имеющих индексы',COUNT([id])                                    , 4 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsIndexed') = 1
UNION
SELECT 'Кол-во таблиц, которые могут иметь индексы',COUNT([id])              , 5 AS [ORDER] FROM [dbo].[sysobjects] WHERE OBJECTPROPERTY([id],'IsIndexable') = 1
UNION
SELECT 'View',COUNT([id])                                                                                       , 6 AS [ORDER] FROM[dbo].[sysobjects] WHERE OBJECTPROPERTY([id], 'IsView') = 1
UNION
SELECT 'Триггеров',COUNT([id])                                                                         , 7 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsTrigger') = 1
UNION
SELECT 'Процедур',COUNT([id])                                                                           , 8 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsProcedure') = 1
UNION
SELECT 'Внешних процедур',COUNT([id])                                                            , 9 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsExtendedProc') = 1
UNION
SELECT 'Правил',COUNT([id])                                                                                       , 10 AS [ORDER] FROM[dbo].[sysobjects] WHERE OBJECTPROPERTY([id], 'IsRule') = 1
UNION
SELECT 'Default',COUNT([id])                                                                            , 11 AS [ORDER] FROM [dbo].[sysobjects]WHERE OBJECTPROPERTY([id], 'IsDefault') = 1
UNION
SELECT 'Ограничений (Check Constraint)',COUNT([id])                                  , 12 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsCheckCnst') = 1
UNION
SELECT 'Ограничений (Constraint)',COUNT([id])                                                , 13 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsConstraint') = 1
UNION
SELECT 'PrimaryKeys',COUNT([id])                                                                        , 14 AS [ORDER] FROM [dbo].[sysobjects]WHERE OBJECTPROPERTY([id], 'IsPrimaryKey') = 1
UNION
SELECT 'Scalar Function',COUNT([id])                                                            , 15 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsScalarFunction') = 1
UNION
SELECT 'Table Valued Function',COUNT([id])                                                      , 16 AS [ORDER] FROM [dbo].[sysobjects] WHEREOBJECTPROPERTY([id], 'IsTableFunction') = 1
ORDER BY 3