SQL Server / 메모

보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다. (Microsoft SQL Server, 오류: 15517)

데이터베이스를 복원하면 사용자 권한 문제로 다음과 같은 에러가 날 수 있다.

이는 다음과 같이 명령하여 해결할 수 있다.

ALTER AUTHORIZATION ON DATABASE:: DBName TO [NewLogin]

예를 들어 문제가 발생한 데이터베이스 이름이 ABC이고, 로그인 계정이 sa라면 다음과 같이 명령한다.

ALTER AUTHORIZATION ON DATABASE:: ABC TO sa;

사용자 매핑 오류 해결하는 방법

한 서버에서 데이터베이스를 백업한 후 다른 서버에 복원했을 때, 이전 서버에서와 같은 사용자를 만들고 사용자 매핑을 할 때...

다음과 같은 오류가 나는 경우가 있다.

백업한 파일에 사용자 관련 정보가 있어 생기는 문제로, 다음과 같은 쿼리로 해결할 수 있다. ABC는 데이터베이스 이름, xyz는 사용자 이름이다.

USE ABC
go
EXEC sp_change_users_login 'Update_One', 'xyz', 'xyz'
같은 카테고리의 다른 글
SQL Server / Query / 주석

SQL Server / Query / 주석

주석으로 처리하면 해당 문자열은 실행되지 않습니다. 코드에 설명을 달거나 특정 쿼리를 잠시 실행시키고 싶지 않을 때 사용합니다. 주석에는 한 줄 주석과 여러 줄 주석이 있습니다. 한 줄 주석은 --로 만듭니다. -- 뒤에 있는 문자열이 주석이 됩니다. -- Commnet SELECT * FROM myDB; -- Comment 여러 줄 주석을 만들고 싶다면 /*와 */로 감쌉니다. 그 사이에 있는 ...

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

만약 공부에 필요한 샘플 데이터베이스가 필요하다면 Micrososft에서 제공하는 AdventureWorks를 사용하자. AdventureWorks 샘플 데이터베이스 페이지에 접속하여 백업 파일을 다운로드한다. AdventureWorks는 OLTP 데이터베이스, AdventureWorksDW는 OLAP 데이터베이스, AdventureWorksLT는 AdventureWorks의 경량 및 축소 버전이다. 디스크 공간이 충분하다면 AdventureWorks와 AdventureWorksDW를 설치하자. SSMS에서 를 선택하고... 마우스 우클릭 후 을 클릭한다. 를 선택하고, 찾아보기 아이콘을 클릭한 후... 를 클릭하고... 다운로드한 파일을 선택하고 을 클릭한다. 을 ...

SQL Server / 데이터베이스 / 만들기, 삭제하기, 수정하기, 조회하기

데이터베이스 만들기 데이터베이스는 create database로 만든다. shop이라는 이름의 데이터베이스를 만든다. create database shop; 데이터베이스 이름에 띄어쓰기 또는 특수문자가 있는 경우 큰 따옴표 또는 대괄호로 감싼다. create database "shop.shop"; create database ; 데이터베이스 삭제하기 데이터베이스는 drop database로 삭제한다. drop database shop; 데이터베이스 이름에 띄어쓰기 또는 특수문자가 있는 경우 큰 따옴표 또는 대괄호로 감싼다. drop database "shop.shop"; drop database ; 데이터베이스 사용하기 작업 대상이 되는 데이터베이스를 ...

SQL Server / Query / SELECT / 데이터 조회

SQL Server / Query / SELECT / 데이터 조회

예제로 사용한 데이터베이스는 AdventureWorks이다. SELECT로 원하는 데이터를 조회한다. SELECT FROM 기본 SELECT 뒤에는 조회할 열 이름을, FROM 뒤에는 조회할 테이블 이름을 입력한다. 모든 열을 조회한다면 *를 사용한다. HumanResources.Employee 테이블의 모든 열을 조회한다. select * from HumanResources.Employee ; HumanResources.Employee 테이블에서 BusinessEntityID, JobTitle, BirthDate, HireDate를 조회한다. select BusinessEntityID, JobTitle, BirthDate, HireDate from HumanResources.Employee ; TOP TOP으로 조회 개수를 정한다. 상위 10개를 ...

SQL Server / SSMS / 쿼리 만들고 실행하는 방법

SQL Server / SSMS / 쿼리 만들고 실행하는 방법

쿼리(Query)를 이용하여 필요한 데이터를 추출하거나 여러 가지 작업을 할 수 있다. SSMS에서 쿼리를 만들고 실행하는 과정은 다음과 같다. SQLServer에 접속하고 데이터베이스 선택 데이터베이스 서버에 접속하고 를 클릭한다. 드롭다운 목록에서 쿼리를 할 데이터베이스를 선택한다. 쿼리 작성하고 실행 쿼리를 입력하고 을 클릭한다. 단축키는 F5이다. SQL은 대소문자를 구분하지 않는다. 하단에 쿼리 결과가 나온다. 여러 개의 쿼리를 입력했다면 각각 결과가 나온다. 일부 쿼리 ...

SQL Server / 메모

SQL Server / 메모

보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다. (Microsoft SQL Server, 오류: 15517) 데이터베이스를 복원하면 사용자 권한 문제로 다음과 같은 에러가 날 수 있다. 이는 다음과 같이 명령하여 해결할 수 있다. ALTER AUTHORIZATION ON DATABASE:: DBName TO 예를 들어 문제가 ...

SQL Server 2022 / Always On 가용성 그룹 만들기

SQL Server 2022 / Always On 가용성 그룹 만들기

Always On 가용성 그룹을 만들면 한 SQL Server에 장애가 생겼을 때 다른 SQL Server가 대신하도록 할 수 있다. Always On 가용성 그룹은 Windows Server의 장애 조치(Failover) 클러스터를 기반으로 하고, 장애 조치(Failover) 클러스터는 Active Directory 환경에서 사용할 수 있다. 즉, Always On 가용성 그룹을 만드는 것보다 그러한 환경을 구축하는 게 더 어려울 ...

SQL Server / 제어문 / CASE

SQL Server / 제어문 / CASE

CASE 함수는 데이터의 값에 따라 특정 값을 부여할 때 사용한다. CASE로 시작하여 END로 끝나고, 조건은 WHEN, 부여할 값은 THEN으로 정의한다. 예를 들어 다음과 같은 점수 데이터가 있다고 하자. 20점 이하는 E, 20점 초과 40점 이하는 D, 40점 초과 60점 이하는 C, 60점 초과 80점 이하는 B, 80점 초과 100점 이하는 A를 주고 ...

SQL Server / 오류 22022 / SQLServerAgent가 현재 실행되고 있지 않으므로 이 동작을 알릴 수 없습니다.

SQL Server / 오류 22022 / SQLServerAgent가 현재 실행되고 있지 않으므로 이 동작을 알릴 수 없습니다.

SQL Server에 스케줄에 따라 자동 백업하는 작업을 추가할 때 다음과 같은 메시지가 나왔습니다. SQL Server Agent가 실행되고 있지 않아 작업을 추가할 수 없는 것입니다. SQL Server Agent가 실행 중이 아니어서 발생한 문제이므로, 실행시키면 해결되겠죠? SQL Server가 설치된 컴퓨터의 서비스를 엽니다. Windows Server라면 서버 관리자에서 를 클릭하면 됩니다. 아니면, 실행 창을 ...

SQL Server / 연산자 / 비교 연산자, 논리 연산자

예제로 사용한 데이터베이스는 AdventureWorks이다. 같다 HumanResources.Employee 테이블에서 BusinessEntityID가 10인 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID = 10 ; 같지 않다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 큰, 즉 같지 않은 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID <> 10 ; <> 대신 !=를 사용해도 된다. select * from HumanResources.Employee where BusinessEntityID != 10 ; 크다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 큰 데이터를 출력한다. select ...