Nenhum banco de dados visível no SQL Server Management Studio

1

Estou tentando determinar quais bancos de dados estão presentes em um servidor SQL.

Posso presumir que, se não vejo nenhum estúdio de gerenciamento, não há nenhum? Este artigo da Microsoft parece sugerir que, se eu não tiver permissões para um banco de dados específico, não o verei.

If the caller of sys.databases is not the owner of the database and the database is not master or tempdb, the minimum permissions required to see the corresponding row are ALTER ANY DATABASE or VIEW ANY DATABASE server-level permission, or CREATE DATABASE permission in the master database. The database to which the caller is connected can always be viewed in sys.databases.

    
por adampski 10.09.2018 / 11:39

1 resposta

3

Abra o SQL Server Management Studio (SSMS) e execute o código a seguir para ver qual associação de função de servidor você possui:

SELECT spr.name
    , sp.name
FROM master.sys.server_principals sp
    LEFT JOIN master.sys.server_role_members srm ON sp.principal_id = srm.member_principal_id
    LEFT JOIN master.sys.server_principals spr ON srm.role_principal_id = spr.principal_id
WHERE sp.sid = SUSER_SID();

Os resultados parecem com:

╔══════════╦════════════╗
║ RoleName ║ MemberName ║
╠══════════╬════════════╣
║ sysadmin ║ MyUser     ║
╚══════════╩════════════╝

Se o resultado mostrar sysadmin na primeira coluna, você terá o nível mais alto de privilégio disponível no SQL Server. A execução do código a seguir, em uma "Nova janela de consulta", mostrará a você definitivamente os bancos de dados presentes na instância do SQL Server, exceto os bancos de dados do sistema, master, tempdb, msdb e model:

SELECT d.name
    , d.create_date
    , d.is_encrypted
    , d.state_desc
    , d.user_access_desc
FROM sys.databases d
WHERE d.database_id > 4
ORDER BY d.name;

Se a lista estiver vazia e você executar isso como um membro da função sysadmin, poderá ter certeza de que não há bancos de dados conectados à instância do SQL Server. Tendo dito isso, pode haver arquivos de banco de dados existentes no servidor que foram desconectados. Localizar arquivos de banco de dados desanexados é uma tarefa complicada, já que você não pode confiar nos arquivos com nomes ou extensões de arquivo específicos.

O SQL Server pode ser instalado várias vezes em um único servidor, através do que é conhecido como "instâncias nomeadas". Você deve verificar a lista de serviços do servidor, através do miniaplicativo de serviços no painel de controle, para nomes de serviço como "SQL Server (*)", onde o * seria o nome da instância. Se houver instâncias múltiplas no servidor, você deve verificar cada instância separadamente usando o código fornecido acima.

    
por 11.09.2018 / 16:50

Tags