No hay bases de datos visibles en SQL Server Management Studio

No hay bases de datos visibles en SQL Server Management Studio

Estoy intentando determinar qué bases de datos están presentes en un servidor SQL.

¿Puedo asumir que si no veo ninguno en Management Studio, entonces no hay ninguno?Este artículode Microsoft parece sugerir que si no tengo permisos para una base de datos en particular, no la veré.

Si la persona que llama a sys.databases no es el propietario de la base de datos y la base de datos no es master o tempdb, los permisos mínimos necesarios para ver la fila correspondiente son ALTERAR CUALQUIER BASE DE DATOS o VER CUALQUIER BASE DE DATOS permiso a nivel de servidor, o el permiso CREAR BASE DE DATOS en la base de datos maestra. La base de datos a la que está conectada la persona que llama siempre se puede ver en sys.databases.

Respuesta1

Abra SQL Server Management Studio (SSMS) y ejecute el siguiente código para ver qué rol de servidor tiene:

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();

Los resultados se parecen a:

╔══════════╦════════════╗
║ Nombre del rol ║ Nombre del miembro ║
╠══════════╬════════════╣
║ administrador de sistemas ║ MiUsuario ║
╚══════════╩════════════╝

Si el resultado se muestra sysadminen la primera columna, entonces tiene el nivel más alto de privilegio disponible en SQL Server. Al ejecutar el siguiente código, en una "Nueva ventana de consulta", se mostrarán definitivamente las bases de datos presentes en la instancia de SQL Server, excepto las bases de datos del sistema, master, tempdb, msdb y 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;

Si la lista está vacía y la ejecuta como miembro del rol de administrador de sistemas, puede estar seguro de que no hay bases de datos conectadas a la instancia de SQL Server. Dicho esto, puede haber una base de datosarchivosexistentes en el servidor que se han desconectado. Localizar archivos de bases de datos separados es un trabajo complicado ya que no puede confiar en que los archivos tengan nombres o extensiones de archivo específicos.

SQL Server se puede instalar varias veces en un único servidor, a través de lo que se conoce como "instancias con nombre". Debe verificar la lista de servicios del servidor, a través del subprograma de servicios en el panel de control, para nombres de servicios como "SQL Server (*)", donde * sería el nombre de la instancia. Si hay varias instancias en el servidor, debe verificar cada instancia por separado usando el código que proporcioné anteriormente.

información relacionada