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

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

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

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

Se o chamador de sys.databases não for o proprietário do banco de dados e o banco de dados não for master ou tempdb, as permissões mínimas necessárias para ver a linha correspondente serão a permissão ALTER ANY DATABASE ou VIEW ANY DATABASE no nível do servidor ou a permissão CREATE DATABASE em o banco de dados mestre. O banco de dados ao qual o chamador está conectado sempre pode ser visualizado em sys.databases.

Responder1

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 são parecidos com:

╔══════════╦════════════╗
║ Nome da Função ║ Nome do Membro ║
╠══════════╬════════════╣
║ administrador de sistema ║ Meu usuário ║
╚══════════╩════════════╝

Se o resultado aparecer sysadminna 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á 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ê executá-la como membro da função sysadmin, poderá ter certeza de que não há bancos de dados conectados à instância do SQL Server. Dito isto, pode haver banco de dadosarquivosexistentes no servidor que foram desanexados. Localizar arquivos de banco de dados desanexados é uma tarefa complicada, pois você não pode confiar que os arquivos tenham nomes ou extensões de arquivo específicos.

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

informação relacionada