В SQL Server Management Studio не отображаются базы данных

В SQL Server Management Studio не отображаются базы данных

Я пытаюсь определить, какие базы данных присутствуют на SQL-сервере.

Могу ли я предположить, что если я не вижу их в Management Studio, то их нет?Эта статьяMicrosoft, похоже, предполагает, что если у меня нет прав доступа к определенной базе данных, то я ее не увижу.

Если вызывающий sys.databases не является владельцем базы данных, а база данных не является master или tempdb, то для просмотра соответствующей строки требуются минимальные разрешения ALTER ANY DATABASE или VIEW ANY DATABASE на уровне сервера, или разрешение CREATE DATABASE в базе данных master. Базу данных, к которой подключен вызывающий, всегда можно просмотреть в sys.databases.

решение1

Откройте SQL Server Management Studio (SSMS) и запустите следующий код, чтобы узнать, к какой роли сервера вы принадлежите:

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

Результаты выглядят примерно так:

╔══════════╦═════════════╗
║ Имя роли ║ Имя участника ║
╠══════════╬════════════╣
║ системный администратор ║ МойПользователь ║
╚══════════╩══════════════╝

Если результат отображается sysadminв первом столбце, то у вас самый высокий уровень привилегий, доступный в SQL Server. Запуск следующего кода в "Новом окне запроса" покажет вам базы данных, присутствующие в экземпляре SQL Server, за исключением системных баз данных, master, tempdb, msdb и 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;

Если список пуст, и вы запускаете его как член роли sysadmin, вы можете быть уверены, что нет баз данных, подключенных к экземпляру SQL Server. Сказав это, могут быть базы данныхфайлысуществующие на сервере, которые были отсоединены. Поиск отсоединенных файлов базы данных — сложная задача, поскольку нельзя полагаться на то, что файлы имеют какие-либо определенные имена или расширения.

SQL Server может быть установлен несколько раз на одном сервере с помощью так называемых «именованных экземпляров». Вам следует проверить список служб сервера с помощью апплета служб на панели управления на наличие имен служб типа «SQL Server (*)», где * — имя экземпляра. Если на сервере есть несколько экземпляров, вам следует проверить каждый экземпляр отдельно, используя код, который я привел выше.

Связанный контент