DBMS/MSSQL
[MSSQL] SQL Server Agent 권한
사용자 계정을 추가 하고 SSMS 을 통해 로그인 하니 SQL Server Agent 서비스 항목이 없다. SQL Server Agent 활성화 하고자 한다 현상 " SSMS 을 통해 로그인 하니 SQL Server Agent 서비스 항목이 비노출 되고 있음" 발생원인 SQL Server Agent Roles 권한이 부여 되어 있지 않음 해결 1. [sysadmin 계정으로 로그인] > [보안] > [권한 추가 하고자 하는 계정 선택] > [오른쪽 마우스 클릭] > [속성 클릭] 2. [로그인속성] > [msdb 데이터베이스 선택] > [역할 멤버 추가] - 에이전트 사용을 위해서는 아래 권한을 추가 해야 한다 SQLAgentUserRole SQLAgentReaderRole SQLAgentOperator..
[MSSQL] 프로파일러(Profiler) 실행 및 설정 쿼리 추적 사용법
시스템 운영 중 개발자들에게 자주 들어오는 질문 중 하나..!! " 사이트가 느려요..DB 에 이상 없는지 봐주세요 " 왜 어떤 액션을 했을때 느린건지, 이벤트는 진행 된게 있는지 등의 상세 상황은 말해주지 않는것인가...?! 이럴때 주로 사용하는 프로파일러 (SQL Profiler) ..!!! 프로파일러( Profiler) 란? 각종 이벤트를 추적, 수집 함으로써 SQL SERVER 최적화를 위해 사용되는 도구 실행 1. SSMS [도구] > [SQL Server Profiler 선택] 2. SQL Server Profiler 창 확인 3. [파일] > [새추적 클릭] 4. 추적 하고자 하는 데이터베이스에 로그인 5. 이벤트 선택 - 쿼리문 추적 진행할 경우 저장프로시저(Stored Procedures..
[MSSQL] ALTER COLUMN 열 수정 안될 때
테이블 컬럼을 삭제를 해야 해서 컬럼 삭제 쿼리를 실행했더니 오류가 나서 삭제가 안된다 해결 한 내용에 대해 정리 해보았다 [에러내용] " 메시지 5074, 수준 16, 상태 1, 줄 10 The object 'DF_' is dependent on column 'COLUMN NAME'. 메시지 4922, 수준 16, 상태 9, 줄 10 ALTER TABLE DROP COLUMN COLUMN NAME failed because one or more objects access this column. " [발생원인] 컬럼을 삭제하려고 하니 해당 열에 DEFAULT 제약조건이 걸려 있어 수정이 불가능 한 오류 가 났다 [해결] 1. 제약조건 확인 EXEC SP_HELP 테이블명 2. 제약조건 삭제 ALTER T..
[MSSQL] SELECT * INTO vs INSERT INTO SELECT
SELECT INTO SELECT INTO 는 원본 기준으로 대상테이블을 새롭게 생성할때 사용 대상테이블이 미리 생성되어 있지 않아도 데이터 복사및 구조를 그대로 사용 가능 SELECT * INTO 대상테이블 FROM 원본테이블 INSERT INTO 원본과 대상테이블이 모두 있을경우 INSERT INTO 사용 INSERT INTO 대상테이블 SELECT * FROM 원본테이블
[MSSQL] BEGIN TRAN
BEGIN TRAN은 왜 사용 하는가? MSSQL 은 AUTO_COMMIT이 기본 설정값으로 설정되어 있다. UPDATE, DELETE 시 잘못된 구문 사용으로 데이터 변동이 이루어 졌을때 되돌릴 수가 없다 BEGIN TRAN 사용 SELECT * FROM CUSTOMER WHERE WEBID='TEST' BEGIN TRAN -- 트랜잭션 시작 UPDATE CUSTOMER SET CUSTNM='테스트' SELECT * FROM CUSTOMER WHERE WEBID='TEST' ROLLBACK TRAN -- 되돌리기 COMMIT TRAN -- 트랜잭션 완료
[MSSQL] 쿼리 바로가기(단축키) 지정하기
MSSQL옵션에 쿼리 단축키를 지정해서 사용 할 수 있다 1. [도구] > [옵션] 선택 2. [환경] > [키보드] > [쿼리 바로 가기] 선택 3. 옵션 설정 자주 사용하는 쿼리를 작성 후 확인 버튼 클릭 사용법 테이블명 -- 테이블선택후 옵션에 설정된 단축키를 눌러 실행 단축키 참고 sp_helpIndex : 테이블 인덱스 정보 보기 select top 10 * from : 상위 10개행 조회 sp_spaceused : 테이블 정보 보기 sp_helptext : 프로시저 스크립트 출력
[MSSQL] 트리거(Trigger) 란?
트리거(Trigger)란? SQL Server 에서 트리거(Trigger)는 특정 이벤트가 발생했을대 다른 이벤트를 자동으로 처리하도록 하기 위해 실행되는 저장프로시저 “자동으로 실행되도록 정의된 특수한 저장 프로시저” 트리거 종류 DML Trigger DDL Trigger LOGON Trigger 트리거 인수 [FOR|AFTER] - DML 트리거를 지정한 모든 작업이 성공적으로 실행되었을 때 실행도록 지정 [INSTEAD OF ] - 트리거를 시작하는 SQL문 대신 DML 트리거가 실행되도록 지정 - DDL 또는 LOGON 트리거에 대해서는 INSTEAD OF를 지정할 수 없다. 트리거 사용 이유 업무규칙 보장 : Business Rule을 서버계층에서 처리 할수 있음 업무 처리 자동화 : 구현된 규..
[MSSQL] 프로시저 이력 관리 DB 생성 및 트리거(Trigger) 셋팅
프로젝트 진행을 하거나 유지보수 중 다수의 개발자들이 있을 경우 개발자들이 프로시저를 임의로 몰래 수정하여 문제가 생기는 경우가 있다. "누가 프로시저 수정한 거 같은데 확인할 수 있나요?" 프로시저 히스토리를 남기기 위해 위에서 언급한 트리거를 통해 작업을 하려 한다 트리거를 사용하는 것은 시스템에 오버헤드를 유발하기도 하지만 상황에 따라 필요한 정보를 남겨야 하는 경우 매우 유용하므로 적용해보기로..!! 트리거를 사용하여 프로시저에 변화가 감지되었을 때 특정 테이블에 저장하는 쿼리 -- 프로시저 트리거 생성 CREATE TRIGGER [ProcedureHis] ON ALL SERVER -- 프로시저 생성, 수정, 삭제 FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PR..
[MSSQL] 대량 데이터 내보내기(Export )
간혹 테이블 데이터를 대량으로 내보내거나 일괄로 데이터를 이전 해야 할 경우가 있다. SQL Management Studio 에 태스크(task)라는 기능을 활용하면 쉽고 편하게 Data Export 할 수 있다 1. [데이터베이스선택] > [오른쪽 마우스 클릭] 2. [태스크] > [데이터내보내기 클릭] 3. SQL Server 가져오기 및 내보내기 마법사 > [NEXT 클릭] 4. [데이터 원본 선택] > [내용입력] > [NEXT 클릭] 5. [대상 선택] > [계정정보 입력] > [데이터베이스 선택] > [NEXT 클릭] 6. [테이블 데이터 복사 or 쿼리 선택] > [NEXT 클릭] 7. [원본 테이블 및 뷰 선택] > [NEXT 클릭] 8. [패키지 저장 및 실행] > [NEXT 클릭] 9...
[MSSQL] Collation(데이터 정렬) 확인 및 변경
개발자에게 테이블의 데이터를 넣으니 한글이 깨진다는 문의가 왔다.. 확인해보니 DB Server 설정 시 기본 Collation(데이터 정렬) SQL_Latin1_General_CP1_CI_AS 로 되어 있었다 클라우드 환경인 AWS, Azure 등 에서 기본 Server Collation 이 SQL_Latin1_General_CP1_CI_AS 로 설정되어 있는 것 같다 1. 현상 테이블을 만들고 한글을 INSERT 하니 한글이 지원하지 않는 (깨지는) 현상이 나타남 2. 발생원인 데이터베이스 생성시 Collation(데이터 정렬)을 따로 설정하지 않아 한글 지원이 되지 않았음 -- COLLATE 확인 SELECT* FROMSYS.DATABASES 해당 쿼리 실행을 하면 아래와 같은 결과가 나온다 쿼리 ..