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