728x90
반응형
세션에서 한 테이블의 IDENTITY_INSERT 속성만 ON으로 설정할 수 있습니다.
CREATE TABLE IDENTITY1 ( id_no INT IDENTITY(1, 1), data1 VARCHAR(100) ) GO CREATE TABLE IDENTITY2 ( id_no INT IDENTITY(1, 1), data2 VARCHAR(100) ) GO SET IDENTITY_INSERT IDENTITY1 ON SET IDENTITY_INSERT IDENTITY2 ON
위 코드를 실행하면 아래와 같은 오류가 발생하게 됩니다.
메시지 8107, 수준 16, 상태 1, 줄 1 IDENTITY_INSERT is already ON for table 'master.dbo.IDENTITY1'. Cannot perform SET operation for table 'IDENTITY2'.
sysadmin 고정 서버 역할, db_owner 및 db_ddladmin 고정 데이터베이스 역할 및 개체 소유자에게 실행 권한이 부여됩니다.
위 예제를 권한이 없는 일반 로그인(Login)으로 실행하면 아래와 같은 오류가 발생하게 됩니다.
메시지 1088, 수준 16, 상태 11, 줄 1 개체 "IDENTITY1"이(가) 없거나 권한이 없으므로 이를 찾을 수 없습니다.
테이블의 현재 ID 값보다 큰 값을 삽입하면 SQL Server는 자동으로 새로 삽입한 값을 현재 ID 값으로 사용합니다.
INSERT INTO IDENTITY1 VALUES ( 'data1' ); INSERT INTO IDENTITY1 VALUES ( 'data2' ); INSERT INTO IDENTITY1 VALUES ( 'data3' ); GO SELECT COUNT(*), MAX(id_no) FROM IDENTITY1 -- 3, 3 GO SET IDENTITY_INSERT IDENTITY1 ON INSERT INTO IDENTITY1 (id_no, data1) VALUES ( 7, 'data3' ); SET IDENTITY_INSERT IDENTITY1 OFF GO SELECT COUNT(*), MAX(id_no) FROM IDENTITY1 -- 4, 7 GO
'DB > MS-SQL' 카테고리의 다른 글
DB 서버 이전을 위한 백업(Backup) / 복구(Restore) 후 연결된 서버 오류(LinkedServerLogin Error) 문제 (0) | 2010.05.11 |
---|---|
@@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() 함수간의 차이점 (0) | 2010.02.05 |
특정 문자열이 포함되어 있는 작업 찾기 (0) | 2009.10.29 |
특정 문자열이 포함되어 있는 저장 프로시저 찾기 (0) | 2009.10.29 |
타 DB의 master를 복사하여 그대로 복구한 이후 SQLAgent 실행시 "SQLServerAgent could not be started" 오류 발생 (0) | 2009.10.26 |