Array
(
)

Como saber se o BD é do sistema ou criado pelo usuario

Felipe_cduarte
   - 05 nov 2004

Fala pessoal,

tem alguma SP ou query que retorne os databases separando os que são do sistema e os criados pelo usuario ? Seria o mesmo que a opção ´Show system databases ...´ na tela de propriedades do registro do SQL faz. A sp_databases retorna todos e se o usuario nao tiver privilegios a mesma nem mostra o result...

quem puder ajudar agradeço !

[]´s

Marcus.magalhaes
   - 05 nov 2004

Boa tarde Felipe.

Vamos ver se entendi.

Vc quer separar os dbs que são do SQL Server dos dbs de usuários?

Os dbs do sql server são sempre: master, model, msdb e tempdb. Sendo que este último é deletado e recriado toda vez que o SQL Server sofre stop/start.

Os outros dbs todos portanto serão de usuários.

Com o select abaixo vc pode identificar quem criou o db :

Select sd.name, sd.dbid, sl.name, crdate
From sysdatabases sd Inner Join sysxlogins sl On sd.sid = sl.sid

Espero ter ajudado.

Att,

Felipe_cduarte
   - 05 nov 2004

Fala cara blz ???

é isso mesmo que eu quero ... pô mas o select traz os BD do sistema. encontrei uma solução , não é das melhores mas funcionou:

Select sd.name, sd.dbid
From master..sysdatabases sd
where sd.dbid > 6
order by sd.name

o > 6 tira os do sistema,

name ---------------------------------------------------------------------- ------
master 1
model 3
msdb 4
Northwind 6
pubs 5
tempdb 2

[]´s

Marcus.magalhaes
   - 06 nov 2004

Boa noite Felipe.

coloca no seu select o filtro por nome.

Select sd.name
From master..sysdatabases sd
Where sd.name not in (´master´, ´msdb´, ´model´, ´tempdb´)

O Pubs e o Northwind não são dbs de sistema, são exemplos, se vc quiser, até como boa prática, apague-os, pq em ambientes de produção eles só ocupam espaço em disco, mas nada.

Att,