본문 바로가기
반응형

IT/MSSQL170

[MSSQL] 데이터베이스 소유자 (db_owner) 조회 및 변경방법 데이터베이스 소유자 (db_owner) 조회 데이터베이스 소유자를 조회하는 2가지 방법에 대해서 알아보자. 첫번째 방법 SELECT a.name AS [Database], b.name AS [Owner] FROM sys.databases AS a JOIN sys.sql_logins AS b ON a.owner_sid = b.sid GO 두번째 방법 SELECT name AS [Database], SUSER_SNAME(owner_sid) AS [Owner] FROM sys.databases GO 데이터베이스 소유자 (db_owner) 변경 변경하고자 하는 DB(BEBE)의 소유자를 'sa' 에서 'admin' 으로 변경하려고 할때 아래와 같은 문법으로 변경하면 된다. 문법 ALTER AUTHORIZATIO.. 2024. 3. 22.
[MSSQL] decimal 및 numeric 사용법(자릿수 확인) decimal 및 numeric 사용법에 대해서 알아보고 자릿수에 대해서 테스트 및 산술 오버플로 오류에 대해서도 확인해 보자 자릿수 확인 decimal[ (p[ ,s] )] 및 numeric[ (p[ ,s] )] 고정 정밀도 및 배율 숫자입니다. 최대 정밀도를 사용하는 경우 유효한 값은 - 10^38 +1 ~ 10^38 - 1입니다. 10진수에 대한 ISO 동의어는 dec 및 dec(p, s)입니다. 숫자는 10진수와 기능적으로 동일합니다. p(전체 자릿수) 저장할 최대 소수 자릿수입니다. 이 숫자에는 소수점의 왼쪽과 오른쪽이 모두 포함됩니다. 전체 자릿수 값은 1에서 최대 전체 자릿수인 38 사이여야 합니다. 기본 전체 자릿수는 18입니다. 예제 --테이블 생성 CREATE TABLE dbo.DN_T.. 2024. 3. 12.
[MSSQL] 복원 전 백업파일의 논리적 파일 위치 확인방법(FILELISTONLY) 데이터베이스 복원 전에 해당 파일을 복원해야 할 경로로 빈 폴더를 만들어 두어야 합니다. 만약 폴더가 없으면 복원시 해당 경로가 없다고 오류가 발생합니다. 논리적 파일위치 확인 복원전 백업파일의 복원 파일위치를 확인하는 명령어 입니다. 문법 : RESTORE FILELISTONLY FROM DISK = '폴더경로\파일명.bak' 실행 : RESTORE FILELISTONLY FROM DISK = N'D:\data2\test\TESTDB.bak' 백업파일 경로를 확인 하였으니 폴더를 만든 후 복원을 진행합니다. 2024. 3. 12.
[MSSQL]현재 세션의 SET OPTION 의 상태값을 확인하는 방법 SQL Server 에서 현재 세션의 SET OPTION 의 상태값을 확인하는 방법에 대해서 알아보자 DECLARE @options INT SELECT @options = @@OPTIONS PRINT @options --아래 참고문서의 값을 모두 합한 값 IF ( (1 & @options) = 1 ) PRINT 'DISABLE_DEF_CNST_CHK 1' IF ( (2 & @options) = 2 ) PRINT 'IMPLICIT_TRANSACTIONS 2' IF ( (4 & @options) = 4 ) PRINT 'CURSOR_CLOSE_ON_COMMIT 4' IF ( (8 & @options) = 8 ) PRINT 'ANSI_WARNINGS 8 ' IF ( (16 & @options) = 16 ) PR.. 2024. 3. 12.
[SQL프로파일] Showplan 설정 테스트 MSSQL 도구 중 하나인 SQL프로파일러는 실시간 쿼리 수집이 가능한 모니터링 도구이다. 프로파일러는 SSMS를 실행 후 상단바의 도구 -> SQL Server Profiler를 클릭하면 접속이 가능하다. SQL프로파일러는 쿼리의 실행계획을 볼 수 있는 추적 이벤트가 존재하는데 그래픽 실행계획을 보는 이벤트인 "Showplan"을 설정하는 방법을 아래에서 알아보자 ※주의 : 운영중인 디비에 사용시 조건을 타이트 하게 하여 부하를 최소화 하고 사용해야한다.(예: 실행시간 10초 이상인 쿼리만 보기) Showplan 추적 이벤트 추적이벤트는 Performance 이벤트를 열면 보이며 아래의 2가지 Showplan 추적 이벤트는 그래픽 실행계획을 확인 할 수 있는 이벤트이다. 1.Showplan XML 쿼리.. 2023. 11. 18.
[MSSQL] 엔터, 탭 제거 후 엑셀에 붙여넣기 MSSQL에서 SELECT한 자료를 복사해서 엑셀이나 CSV등으로 붙여넣기 해서 옮기는 경우 엑셀 시트 한칸에 한줄로 이쁘게 들어가는 것이 라니라 아래로 여러 셀로 붙여 넣어지는 경우가 있다. 이런 경우 MSSQL에서 개행문자(엔터, 탭)을 제거해줘야하는데 아래서에 간단히 알아보자 MSSQL 엔터제거 문법 : 엔터: REPLACE(REPLACE(컬럼명, CHAR(13), ''), CHAR(10), ''); \n, \r은 엔터이기 때문에 char(10)과 char(13)을 찾아서 REPLACE를 해준다 MSSQL 탭제거 문법 : 탭: REPLACE(컬럼명, CHAR(9), '') \t는 탭이기 때문에 char(9)를 찾아서 REPLACE를 해준다 이상으로 MSSQL에서 엑셀로 결과를 복사해서 붙여넣어 옮기.. 2023. 11. 18.
[MSSQL] 데드락(교착상태) 테스트 예제 DeadLock이란 둘 이상의 세션이 서로 맞물려 차단된 상태를 말한다. DeadLock이 발생하면 영원히 지속되기 때문에 SQL 서버가 자동으로 찾아내어 해제시켜 준다. DeadLock에는 두가지 종류가 있다. 1. 순환 교착 (Cycle Deadlock) 교착상태를 설명할 때 보통 예로 드는 것이 이 "Cycle DeadLock"이다. 두 세션이 필요한 리소스를 얻기 위해 서로 상대방이 Lock을 풀기를 기다리는 상태라고 설명할 수 있다. 예를 들면 다음과 같다. 테스트를 위한 테이블 생성 및 데이터 입력 create table TAB_A( seq int NOT NULL ,name varchar(10) ) go ALTER TABLE TAB_A ADD CONSTRAINT PK_TAB_A PRIMARY .. 2023. 11. 18.
[MSSQL] 복사전용백업(COPY ONLY BACKUP) 실행방법 및 개념설명 복사전용백업이란? 기존 백업 시퀀스에 영향을 주지 않고 백업을 받는 방법이다. 즉 복사전용백업은 기존의 백업 시퀸스와 독립적으로 작용한다. 예를 들어 매일 전체 백업을 진행하고 1시간마다 차등백업을 진행한다고 생각해보자. 중간에 현재 데이터에 대한 복원 요청이 올 경우 전체 백업을 받게 되는데 복사전용백업 옵션 없이 백업을 받게 되면 시퀸스가 달라져서 기존에 백업 정책 복원에 문제가 생긴다 이럴 경우 복사전용백업을 사용한다. 복사전용백업 특징 SQL Server 2005 이상부터 지원한다. 복사 전용 전체 백업은 차등 백업으로 사용 될 수 없으며 차등 기반에 영향을 미치지 않는다. 복사 전용 백업 이후에는 트랜잭션 로그를 자를 수 없다. 복사전용백업 실행 복사전용 백업으로 풀백업과 로그백업을 진행합니다... 2023. 11. 18.
[MSSQL] 대규모 테이블 insert시 락 방지를 위해 분할하여 넣는 방법 대량의 데이터를 한번에 INSERT 하게 되면 LOCK 이 발생하게 됩니다. 이를 방지하는 방법은 10000개의 데이터를 한번에 INSERT 하지 않고 1000개씩 나눠서 INSERT 하는 방법입니다. 이제 아래에서 대규모 일괄 처리 작업을 여러 개의 작은 작업으로 분할하는 방법에 대해서 알아보겠습니다. 1.테이블 생성 2개의 테이블일 생성해 줍니다. create table number_test1 ( num1 int ) create table number_test2 ( num1 int ) 2.데이터 삽입(number_test1) number_test1 테이블에 1~10000개의 숫자를 INSERT 합니다. SET NOCOUNT ON; DECLARE @i INT = 1 WHILE @i number_test.. 2023. 8. 13.
[MSSQL] MAX함수 SELECT절 가공 시 인덱스를 사용할까? SELECT절 MAX함수에 하나의 컬럼을 넣어서 최대 값을 구하게 되는데 컬럼 2개를 더하여 MAX값을 구하는 경우가 있다. 이럴 경우 실행계획에서 인덱스를 사용할 수 있을까? 1.테이블 생성 CREATE TABLE [dbo].[MAX_TEST] ( [No] [char](14) NOT NULL, [YMD] [char](8) NULL, [HMS] [char](6) NULL, [TAG] [varchar](6) NULL, CONSTRAINT [PK_MAX_TEST] PRIMARY KEY CLUSTERED([No] ASC) ) GO 2.인덱스 생성 CREATE NONCLUSTERED INDEX [IX_MAX_TEST_TAG_YMD_HMS] ON [dbo].[MAX_TEST] ( [TAG] ASC, [YMD] A.. 2023. 8. 13.
반응형