SQL Server

테이블이란 데이터들을 모아놓은 객체를 의미합니다. 하나의 테이블 안에는 다수의 데이터가 저장될 수 있습니다. 테이블 생성하는 방법 테이블은 기본적으로 컬럼을 가지고 있어야 합니다. 1 2 3 4 5 CREATE TABLE dbo.table_name ( column_name1 INT ,column_name2 VARCHAR(10) ) cs 파일그룹을 지정하는 방법 MSSQL 은 다른DBMS 와 다르게 하나의 DB에서 다수의 파일그룹을 가질 수 있습니다. 파일그룹은 물리적파일을 그룹으로 묶어놓은 개념으로, 파일그룹을 다르게 지정함으로 써 데이터가 저장되는 파일을 나눌 수 있습니다. 1 2 3 4 5 CREATE TABLE dbo.table_name ( column_name1 INT ,column_name2 V..
프로시저란? DBMS 에서 제공하는 프로그램 SQL 를 의미합니다. DB 기능이지만 프로그램이기 때문에 간단한 문법인 IF, WHILE 등 프로그래밍 문법을 사용할 수 있고, 프로시저를 호출할 때 매개변수를 받거나 전달해 줄 수 있습니다. DB 객체로 생성할 수 있고 여러 프로그래밍 문법과 SQL 을 하나의 객체내로 묶어서 사용할 수 있습니다. 따라서 개발에서 코드의 복잡도를 줄여줄 수 있습니다. 프로시저 생성하는 방법 기본 문법 제일 기본이 되는 문법입니다. CREATE PROCEDURE 프로시저 명으로 시작하고, AS BEGIN 과 END 사이에 원하는 쿼리를 입력하는 방식입니다. 1 2 3 4 5 6 CREATE PROCEDURE Schema_Name.Procedure_Name AS BEGIN SE..
이슈 상황 OPENROWSET 을 사용하여 실행계획 XML 타입을 수집하려고 하는 상황에서 오류가 발생하였습니다. 오류내용 [ErrorCode]9514 [ErrorMessage] 분산 쿼리에서 Xml 데이터 형식을 사용할 수 없습니다. 원격 개체 'a'에 xml 열이 있습니다. 쿼리 9번째 라인을 보면 XML 타입인 query_plan 을 OPENROWSET 을 사용하여 조회하려고 하고 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 set @query = 'SELECT @@SERVERNAME AS [ServerName], DB_NAME(t.[dbid]) AS [DBName], qs.plan_handle AS [PlanHandle], CASE WHEN ob..
SQL Server 테이블 조회에 필요한 뷰 sys.dm_db_partitions_stats 현재 데이터베이스의 파티션에 구성된 페이지와 로우 수 정보를 반환합니다. sys.internal_tables 내부 테이블 전용입니다. sys.all_objects 스키마에 구성된 모든 객체를 보여줍니다. SQL Server 모든 테이블 크기를 조회하는 쿼리 + 테이블의 건수와, 테이블에 구성된 인덱스들의 합도 같이 확인할 수 있습니다. 쿼리로 확인하는 방법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 SELECT OBJECT_SCHEMA_NAME(a2.object_id) AS SchemaName, ..
SQL Server 인덱스 조회에 필요한 뷰sys.indexes인덱스와 힙 개체를 포함합니다.이 때 힙은 클러스터 인덱스가 없는 테이블을 의미합니다. sys.partitions파티션ID에 속한 개체 내부의 인덱스ID를 포함합니다. sys.allocation_units데이터베이스 할당된 유닛을 포함합니다.하나의 유닛에 몇 페이지(KB)가 할당되었는지를 알 수 있습니다. 유닛의 used_pages 가 1 이라면 8KB 가 사용되었다는 의미로 해석할 수 있습니다. SQL Server 모든 인덱스 크기를 조회하는 쿼리위 3개의 뷰를 조인하여 SQL Server 전체 인덱스의 크기를 조회하는 쿼리입니다. 123456789101112131415161718192021222324252627SELECT OBJECT_SC..
상황 회색선을 기준으로 설명하자면Batch Requests/sec 는 초당 800 정도로 증가하였습니다. 이 때 Lock Waits/sec, Lock Timeouts/sec 이 증가하였지만Average Wait Time(ms) 는 감소하였습니다. Lock Wait 이 발생하고 심지어 Timeout 까지 발생하는 상황에서 Average Wait Time 은 감소하는그래프가 의아하여 조사한 내용을 정리하였습니다. Lock Waits, Lock Time, Average Wait Time 의 의미Lock Waits/sec초당 대기 잠금을 나타냅니다.단순히 잠금이 대기했다 라는 것을 나타내는 것일 뿐, 이 잠금이 얼마동안 대기했다를 의미하는 것이 아닙니다. Lock Timeouts/secLock Timeouts ..
Lock Waits/sec, Latch Waits/sec 수치가 높은 현상Batch Requests 수치가 증가하면서 Lock Waits 수치가 200 이상으로 증가하였습니다.Lock Waits 수치가 증가하면서 Lock Timeouts 수치도 함께 증가하였고Average Wait Time 수치가 2000ms (2초) 이상으로 증가하였습니다. 지표 의미 Batch Requests/sec DB 에 호출하는 초당 쿼리 수 ( 하나의 프로시저에서 여러개의 쿼리를 호출하더라도 1의 수치만 증가 ) Lock Waits/sec 초당 잠금을 획득하기 위해 대기하는 수 Lock Timeouts/sec 초당 잠금을 획득하기 위해 대기하다가 Timeout 되는 수 Average Wait Time (ms) 쿼리가 완료되기 ..
sp_MSForEachDB 란각 데이터베이스에 쿼리를 수행하는 역할로 'USE ?' 구문과 같이 사용됩니다. WITH RESULT SETS 이슈OPENROWSET 과 sp_MSForEachDB SP 를 함께 사용하게 되면 WITH RESULT SETS 구문이 필요한 경우가 있습니다.SP 에서 동적쿼리를 사용하게 되는 경우입니다. 사용하지 않는 경우 아래와 같은 오류가 발생합니다.해결을 위해서는 아래 쿼리를 참고해 주세요.메시지 11514, 수준 16, 상태 1, 프로시저 sys.sp_describe_first_result_set, 줄 1 [배치 시작 줄 0] 프로시저 'sp_MSforeachdb'의 문 'exec(@precommand)'에 동적 SQL이 있으므로 메타데이터를 확인할 수 없습니다. WITH..
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/7ef42395-0475-4820-969e-b7e7ab297974/recent-executed-queries-for-a-specific-database?forum=transactsql
Standard 버전의 AG 이중화 가용성 그룹 개념 Standard 버전은 하나의 가용성 그룹이 여러개의 DB 를 구성할 수 없습니다.이말은 하나의 가용성 그룹은 하나의 데이터베이스만 가질 수 있다는 부분입니다. 이런 경우에는 가용성 그룹이 DB 별로 각각 구성되어 있다보니하나의 서버에서 주, 보조 역할이 가용성 그룹마다 다르게 설정되어 있을 수 있습니다. 이 때 어느 한 가용성 그룹에서 Failover 가 발생하면,다른 가용성 그룹도 같이 Failover 되도록 설정하여항상 하나의 서버가 주 역할을 하도록 설정할 수 있습니다. Standard 버전에서 AG 이중화 Auto Failover 설정방법1. 배치작업을 만든 후 아래 프로시저를 호출하도록 설정합니다.이 프로시저는, 가용성 그룹 역할이 보조인 ..
꽁담
'SQL Server' 카테고리의 글 목록 (2 Page)