본문 바로가기

DataBase/MS-SQL

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) 작은 경.. 더보기
SSMS 완료시간 : 안 보여지도록 옵션 수정 SSMS(SQL Server Management Studio) 도구 - 옵션에 아래 옵션을 체크 해제 하면 됩니다. 쿼리실행 - SQL Server - 고급 - 완료 시간 표시 체크 해제 더보기
디비 백업 프로시저 및 리포트 메일 발송 기능 전문가 분들은 광고 클릭후 닫아주시면 감사하겠습니다. :) 저와 같이 운영관리에 익숙치 않은 분들을 위한 실 사용 사례입니다. 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 더보기
SQL Server 에이전트에 등록된 작업 목록 조회 SQL Server 에이전트에 등록된 작업 목록을 조회 하는 SQL 입니다. SELECT A.name, case description when '설명이 없습니다.' then '' else description end as description, CASE convert( nvarchar(3), [freq_type], 3 ) WHEN 4 THEN N' 매일' WHEN 8 THEN N' 매주 ' + CASE WHEN [freq_interval] & 1 = 1 THEN N'일' ELSE '' END + CASE WHEN [freq_interval] & 2 = 2 THEN ' 월' ELSE '' END + CASE WHEN [freq_interval] & 4 = 4 THEN ' 화' ELSE '' END + CA.. 더보기
백업 혹은 복구중인 데이터베이스 진행률 확인 백업 혹은 복구 중인 데이터 베이스의 진행 상태나 진행률을 확인하는 SQL 입니다. 경과된 시간 , 남은 시간 , 예상 소요 시간등을 확인 할 수 있습니다. SELECT r.session_id,r.command ,cast(CONVERT(NUMERIC(6,2),r.percent_complete) as varchar) + ' %' AS [Percent Complete] ,CONVERT(VARCHAR(20),DATEADD(ms,r.estimated_completion_time,GetDate()),20) AS [ETA Completion Time] ,CONVERT(NUMERIC(10,2),r.total_elapsed_time/1000.0/60.0) AS [Elapsed Min] ,CONVERT(NUMERIC(1.. 더보기
프로시저(sp)에서 사용하는 테이블 목록 , 특정 테이블을 참조하는 프로시저 목록 테이블의 속성이 변경되었을 때 혹은 컬럼 속성이 변경되었을 때 아니면 테이블의 용도나 정체(?)를 알 수 없을 때 관련된 sp를 확인하기 위해서 개인적으로 자주 사용하는 SQL 입니다. 특정 프로시저에서 사용하는 테이블 목록을 조회하는 SQL 문입니다. -- 프로시저에서 사용하는 테이블 목록 ;WITH stored_procedures AS ( SELECT oo.name AS table_name, o.name, ROW_NUMBER() OVER(partition by o.name,oo.name ORDER BY o.name,oo.name) AS row FROM sysdepends d INNER JOIN sysobjects o ON o.id=d.id INNER JOIN sysobjects oo ON oo.id=.. 더보기
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 .. 더보기