SQL Server Management Studio에는 데이터베이스가 표시되지 않습니다.

SQL Server Management Studio에는 데이터베이스가 표시되지 않습니다.

SQL 서버에 어떤 데이터베이스가 있는지 확인하려고 합니다.

Management Studio에 아무 것도 표시되지 않으면 아무 것도 없다고 가정할 수 있습니까?이 기사Microsoft에서는 특정 데이터베이스에 대한 권한이 없으면 해당 데이터베이스를 볼 수 없다고 제안하는 것 같습니다.

sys.databases의 호출자가 데이터베이스의 소유자가 아니고 데이터베이스가 master 또는 tempdb가 아닌 경우 해당 행을 보는 데 필요한 최소 권한은 ALTER ANY DATABASE 또는 VIEW ANY DATABASE 서버 수준 권한 또는 CREATE DATABASE 권한입니다. 마스터 데이터베이스. 호출자가 연결된 데이터베이스는 항상 sys.databases에서 볼 수 있습니다.

답변1

SSMS(SQL Server Management Studio)를 열고 다음 코드를 실행하여 보유하고 있는 서버 역할 멤버십을 확인하세요.

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

결과는 다음과 같습니다.

╔===========╦=============╗
║ 역할이름 ║ 회원이름 ║
╠===========╬=============╣
║ 시스템관리자 ║ MyUser ║
╚===========╩=============╝

결과가 sysadmin첫 번째 열에 표시되면 SQL Server에서 사용할 수 있는 최고 수준의 권한이 있는 것입니다. "새 쿼리 창"에서 다음 코드를 실행하면 시스템 데이터베이스인 master, tempdb, msdb 및 model을 제외하고 SQL Server 인스턴스에 있는 데이터베이스가 확실히 표시됩니다.

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 (*)"와 같은 서비스 이름을 확인해야 합니다. 여기서 *는 인스턴스 이름입니다. 서버에 여러 인스턴스가 있는 경우 위에 제공한 코드를 사용하여 각 인스턴스를 별도로 확인해야 합니다.

관련 정보