본문 바로가기

MSSQL

MS SQL 비트연산(&) 사용 배경은 계속적으로 추가되는 Flag 컬럼에 대해 고민 중 하나의 공용 컬럼에 값을 다 넣어버리기로 함. DECLARE @i INT SET @i = 6 SELECT @i & 1 , 결과 => 0 SELECT @i & 2 , 결과 => 2 SELECT @i & 4 , 결과 => 4 SELECT @i & 6 , 결과 => 6 SELECT @i & 8 , 결과 => 0 INT 타입의 컬럼에 정수형 데이터를 넣고 2진법으로 보아 계산을 하는 방법. 2번째 조회인 @i & 2 의 내용을 보면. 6 > 0110 2 > 0010 ====== 0010 > 2 결과 값이 2가 나온다. 일반적으로 사용할 경우에는 SELECT * FROM 테이블 WHERE 컬럼 & 2 > 0 위와 같이 0보다 크거나(True) 작은 경.. 더보기
디비 백업 프로시저 및 리포트 메일 발송 기능 전문가 분들은 광고 클릭후 닫아주시면 감사하겠습니다. :) 저와 같이 운영관리에 익숙치 않은 분들을 위한 실 사용 사례입니다. 1. master DB에 백업 기록을 위한 테이블을 생성했습니다. USE [master] GO -- 시작안되는 경우도 발생하기 때문에 startDt 기본값을 넣지 않음. CREATE TABLE [dbo].[tblBackupDB]( [dbName] [varchar](50) NULL, [startDt] [datetime] NULL, [endDt] [datetime] NULL, [msg] [ntext] NULL, [mdfSize] [int] NULL, [ldfSize] [int] NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO 2. 백업을 위한 프로시.. 더보기
저장하지 않은 쿼리 확인 하는 방법 , 강제 종료 시 쿼리 복구 때때로 ssms가 강제 종료 된다거나 저장하지 않고 닫았을 때 SQL 쿼리를 복구 해야하는 경우 아래의 쿼리에서 일정 시간동안 쿼리 확인이 가능합니다. Use SELECT execquery.last_execution_time AS [Date Time], execsql.text AS [Script] FROM sys.dm_exec_query_stats AS execquery CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql ORDER BY execquery.last_execution_time DESC 참조 Url : qastack.kr/programming/15034832/recover-unsaved-sql-query-scripts 더보기
MSSQL 차등백업 방법 및 SQL 차등 백업은 전체 백업 마지막 시점을 기준으로 이후에 수정된 내용을 백업는 방법입니다. 기본적인 내용과 SQL문을 공유합니다. -- 전체 백업 BACKUP DATABASE [test] TO DISK = N'D:\Backup\test_full.bak' WITH NOFORMAT, NOINIT, NAME = N'test-전체 데이터베이스 백업', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO -- 차등백업 1 BACKUP DATABASE [test] TO DISK = N'D:\Backup\test_1.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'test-전체 데이터베이스 백업', SKIP, NOREWIND, NOUNLOAD, STATS .. 더보기
IDENTITY_INSERT가 OFF로 설정되면 테이블 '테이블명'의 ID 열에 명시적 값을 삽입할 수 없습니다. 쿼리 CREATE TABLE dbo.[테이블명] ( seq int IDENTITY (1, 1) NOT NULL, id varchar(20) NOT NULL ) insert into dbo.[테이블명] (seq,id) values(1,'abc') IDENTITY_INSERT가 OFF로 설정되면 테이블 '테이블명'의 ID 열에 명시적 값을 삽입할 수 없습니다. IDENTITY 가 있는 데이터 테이블 생성 후 해당 컬럼 입력 시도 할 경우 에러 발생 아래와 같이 IDENTITY_INSERT ON 처리 후 실행 시 가능해짐 반드시 INSERT 후에 OFF 처리 해야 이후 문제가 안생김 SET IDENTITY_INSERT dbo.[테이블명] ON insert into dbo.[테이블명] (seq,id) value.. 더보기
MSSQL - 시간 분 시간별 그룹화 / 5분단위로 년,월,일,시,분 단위로 그룹핑하여 보기 각종 통계시 활용 select DATEPART(YEAR, adddt) '년' ,DATEPART(MONTH, adddt) '월' ,DATEPART(DAY, adddt) '일' ,DATEPART(HOUR, adddt) '시' -- ,(DATEPART(MINUTE, adddt) / 10) ,count(*) FRom 테이블명 with(nolock) GROUP BY DATEPART(YEAR, adddt) ,DATEPART(MONTH, adddt) ,DATEPART(DAY, adddt) ,DATEPART(HOUR, adddt) --,(DATEPART(MINUTE, adddt) / 10) order by 1,2,3,4 select TIMEFROMPARTS( DATEPART(H.. 더보기
MSSQL, 테이블 및 인덱스 사이즈 구하기, Table and Index size in SQL Server create table #t ( name nvarchar(128), rows varchar(50), reserved varchar(50), data varchar(50), index_size varchar(50), unused varchar(50) ) declare @id nvarchar(128) declare c cursor for select '[' + sc.name + '].[' + s.name + ']' FROM sysobjects s INNER JOIN sys.schemas sc ON s.uid = sc.schema_id where s.xtype='U' open c fetch c into @id while @@fetch_status = 0 begin insert into #t exec sp_sp.. 더보기
database mdf 파일 사이즈 축소 로그 서버에 DB 파일 사이즈가 900기가에 육박하여 불필요한 로그를 삭제하고 DBCC SHRINKFILE(DB명, TRUNCATEONLY) 위와 같이 축소를 했다. 하지만 크게 줄어들지 않은 mdf 파일 사이즈 왜 그렇지 하고 찾아보니 SHRINKFILE 옵션을 찾아보니 (MS docs 링크) NOTRUNCATE target_percent의 지정 여부와 관계없이 데이터 파일의 끝에서 할당된 페이지를 파일 앞의 할당되지 않은 페이지로 이동합니다. 파일 끝의 사용 가능한 공간이 운영 체제에 반환되지 않고, 파일의 물리적 크기가 변경되지 않습니다. 그러므로 NOTRUNCATE를 지정하면 파일이 축소되지 않는 것처럼 보입니다. NOTRUNCATE는 데이터 파일에만 적용되며 로그 파일에는 영향을 주지 않습니다... 더보기