Я пытаюсь проверить сеть, найти и очистить старые базы данных, которые, возможно, были протестированы и забыты.T-SQL - список всех баз данных на всех серверах в сети
Прямо сейчас, я знаю, что могу использовать SQLCMD -L
, чтобы увидеть серверы и экземпляры. Я могу использовать exec sp_helpdb для получения имени сервера, имени db, размера, владельца, созданного и состояния, если Management Studio подключен к серверу (серверам).
Оба они сами по себе велики, но им необходимо подключиться к каждому серверу в MGMT Studio, а затем выполнить нижеприведенный запрос в отношении группы зарегистрированных серверов.
Я надеялся создать цикл следующего запроса, чтобы просмотреть все базы данных, найденные SQLCMD -L
, чтобы я мог отправлять результаты аудита для очистки, возможно, через SQLCMS/OSQL, чтобы избежать процесса ручного подключения. Мне также, возможно, придется выработать соответствующий журнал для учетной записи, поэтому, если в этом беспорядке есть возможность, это будет здорово (Sa, Win Auth, SQL Auth и т. Д.)
Если у кого-либо есть было предложено некоторое предложение о решении запустить его в качестве автоматизированного процесса.
create table #temp
(
name sysname
,db_size nvarchar(13)
,owner sysname
,dbid smallint
,created smalldatetime--nvarchar(11)
,status nvarchar(600)
,compatibility_level tinyint
)
go
insert into #temp
exec sp_helpdb
ALTER TABLE #temp
DROP COLUMN dbid
ALTER TABLE #temp
DROP COLUMN status
ALTER TABLE #temp
DROP COLUMN compatibility_level
select * from #temp
where name not like'master%'
AND name not like 'model%'
AND name not like 'msdb%'
AND name not like 'ems_master%'
AND name not like 'tempdb%'
AND name not like 'ReportServer%'
AND name not like 'HR'
AND name not like 'EMS_Personnel%'
order by created
drop table #temp
Я должен был упомянуть, PowerShell не является вариантом в этой среде. –