Como saber se o BD é do sistema ou criado pelo usuario
05/11/2004
0
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
Felipe_cduarte
Posts
05/11/2004
Marcus.magalhaes
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: [b:a73c714d99]master, model, msdb e tempdb[/b:a73c714d99]. 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 :
[color=red:a73c714d99]Select sd.name, sd.dbid, sl.name, crdate
From sysdatabases sd Inner Join sysxlogins sl On sd.sid = sl.sid[/color:a73c714d99]
Espero ter ajudado.
Att,
05/11/2004
Felipe_cduarte
é 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
06/11/2004
Marcus.magalhaes
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,
Clique aqui para fazer login e interagir na Comunidade :)