728x90

MSSQL UI로 하려다 안 되서 명령어로 간단하게

 

alter login "계정명" with password='비번' MUST_CHANGE, CHECK_EXPIRATION = ON;

728x90
728x90

-- 에러 코드도 없이 수행이 안 되는 경우

-- 유지관리계획 우클릭 --> 기록 보기 --> SQL Server 에이전트 확인

 

 

-- 서버 admin 계정명을 변경하여 MSSQL 내부의 OS admin 사용자명도 변경해야 함.

-- 보안 --> 로그인 --> hostname\admin계정명 확인!!

728x90
728x90

-- 인덱스 조각화 정보
SELECT a.object_id
, [Table Name] = object_name(a.object_id)
, a.index_id
, [Index Name] = b.name
, avg_page_space_used_in_percent
, avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(
DB_ID (N'db_srm')
, NULL     -- 스키마 네임은 빼고 순수 테이블명만 넣기
, NULL
, NULL
, 'SAMPLED'
) AS a
INNER JOIN sys.indexes AS b
ON a.object_id = b.object_id
AND a.index_id = b.index_id

 

-- 전체 테이블 인덱스 REINDEX

EXEC Sp_msforeachtable
  @command1="print '?' DBCC DBREINDEX ('?', '', 90)"

 

-- 일부 테이블 인덱스 REINDEX

DBCC DBREINDEX ('table_name', '', 90)

728x90
728x90

-- 10프로 이상 파편화된 인덱스 REBUILD 명령어 추출 쿼리
SELECT a.object_id
, [Table Name] = object_name(a.object_id)
, a.index_id
, [Index Name] = b.name
, avg_page_space_used_in_percent
, avg_fragmentation_in_percent
, [query] = 'ALTER INDEX ALL ON ' + CONVERT (varchar, object_name(a.object_id)) + ' REBUILD WITH (FILLFACTOR = 90);'
FROM sys.dm_db_index_physical_stats(
 NULL
, NULL    
, NULL
, NULL
, 'SAMPLED'
) AS a
INNER JOIN sys.indexes AS b
ON a.object_id = b.object_id
AND a.index_id = b.index_id
where avg_fragmentation_in_percent > 10

728x90

'MSSQL' 카테고리의 다른 글

[MSSQL] 유지관리계획 수행이 안 되는 경우  (1) 2025.01.03
[MSSQL] 인덱스 파편화 정보, REINDEX  (0) 2024.12.27
[MSSQL] 인덱스 조회 및 누락된 인덱스 확인  (0) 2024.12.27
LOCK  (0) 2023.10.27
SQL 실행 이력 조회  (0) 2023.05.16
728x90

-- 각 테이블 인덱스 현황

SELECT a.name      AS table_name
     , b.name      AS index_name
     , d.name      AS column_name
     , b.type_desc AS index_type
  FROM sys.tables a
     , sys.indexes b
     , sys.index_columns c
     , sys.columns d
 WHERE a.object_id = b.object_id 
   AND b.object_id = c.object_id 
   AND b.index_id  = c.index_id 
   AND c.object_id = d.object_id 
   AND c.column_id = d.column_id

 

-- 현재 데이터베이스에 누락된 인덱스 제안

SELECT
  CONVERT (varchar(30), getdate(), 126) AS runtime,  mig.index_group_handle,  mid.index_handle,
  CONVERT (decimal (28, 1), migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) ) AS improvement_measure,
  'CREATE INDEX EX_' + CONVERT (varchar, mig.index_group_handle) + '_' + CONVERT (varchar, mid.index_handle) + ' ON ' + mid.statement + ' (' + ISNULL (mid.equality_columns, '') + CASE
    WHEN mid.equality_columns IS NOT NULL
    AND mid.inequality_columns IS NOT NULL THEN ','
    ELSE ''
  END + ISNULL (mid.inequality_columns, '') + ')' + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement,
  migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid ON mig.index_handle = mid.index_handle
WHERE CONVERT (decimal (28, 1),migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans)) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * (migs.user_seeks + migs.user_scans) DESC

728x90

'MSSQL' 카테고리의 다른 글

[MSSQL] 인덱스 파편화 정보, REINDEX  (0) 2024.12.27
[MSSQL] 인덱스 파편화, REBUILD 명령어 추출 쿼리  (0) 2024.12.27
LOCK  (0) 2023.10.27
SQL 실행 이력 조회  (0) 2023.05.16
VERSION  (0) 2023.05.12
728x90

-- MSSQL 현재 CONNECT되있는 세션
-- SPID < 50 (내부 프로세스)
SELECT *
FROM SYSPROCESSES 
WHERE SPID > 50;

--현재 LOCK 정보 보기
EXEC SP_LOCK;

-- 현재 수행중인 SQL 구문
SELECT T.* , SESSION_ID 
FROM SYS.DM_EXEC_REQUESTS R
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(R.SQL_HANDLE) T
WHERE SESSION_ID = 52

--LOCK 종류중 OBJECT_ID 구분
SELECT *
FROM SYS.OBJECTS 
WHERE ID = 'DB_ID' OR 'OBJECT_ID OR TABLE_ID';

 

-- 현 LOCK 세션 확인 
EXEC SP_LOCK;

 

-- OBJECT 정보 확인
SELECT * FROM SYS.OBJECTS
WHERE OBJECT_ID ='1467152272';

SELECT * FROM SPT_VALUES;


SELECT * FROM SYS.DATABASES;

SELECT 
REQUEST_SESSION_ID AS SESSION_ID,
RESOURCE_LOCK_PARTITION,
REQUEST_STATUS,
DB_NAME(RESOURCE_DATABASE_ID) DB_NAME
 FROM SYS.DM_TRAN_LOCKS;
 

-- BLOCKING 세션 확인
SELECT * FROM SYS.SYSPROCESSES
WHERE BLOCKED > 0;

728x90

'MSSQL' 카테고리의 다른 글

[MSSQL] 인덱스 파편화, REBUILD 명령어 추출 쿼리  (0) 2024.12.27
[MSSQL] 인덱스 조회 및 누락된 인덱스 확인  (0) 2024.12.27
SQL 실행 이력 조회  (0) 2023.05.16
VERSION  (0) 2023.05.12
CTAS  (0) 2023.05.12
728x90

select 
db_name(B.dbid) dbname
, object_schema_name(objectid, B.dbid) schemaname
, object_name(objectid, B.dbid) spname
, A.total_elapsed_time
, creation_time
, last_execution_time
, text
from sys.dm_exec_query_stats A
cross apply sys.dm_exec_sql_text(A.plan_handle)B
join sys.dm_exec_cached_plans C on A.plan_handle = C.plan_handle
where db_name(B.dbid) = 'DatabaseName'
order by last_execution_time desc ;

728x90

'MSSQL' 카테고리의 다른 글

[MSSQL] 인덱스 조회 및 누락된 인덱스 확인  (0) 2024.12.27
LOCK  (0) 2023.10.27
VERSION  (0) 2023.05.12
CTAS  (0) 2023.05.12
OFFSET FETCH 구문  (0) 2022.10.12
728x90

-- VERSION 확인 명령어

SELECT @@VERSION;

728x90

'MSSQL' 카테고리의 다른 글

LOCK  (0) 2023.10.27
SQL 실행 이력 조회  (0) 2023.05.16
CTAS  (0) 2023.05.12
OFFSET FETCH 구문  (0) 2022.10.12
INDEX, TABLESPACE 조회 쿼리  (0) 2022.10.07
728x90

SELECT * INTO NEW_TABLE_NAME
FROM OLD_TABLE_NAME 
WHERE 조건 ; 

 

-- ORACLE 비교

CREATE TABLE NEW_TABLE_NAME

AS 

SELECT * 

FROM OLD_TABLE_NAME 
WHERE 조건 ; 

728x90

'MSSQL' 카테고리의 다른 글

LOCK  (0) 2023.10.27
SQL 실행 이력 조회  (0) 2023.05.16
VERSION  (0) 2023.05.12
OFFSET FETCH 구문  (0) 2022.10.12
INDEX, TABLESPACE 조회 쿼리  (0) 2022.10.07
728x90

-- OFFSET FETCH

SELECT * FROM TABLE_SCHEMA.TABLE_NAME
ORDER BY COLUMN_NAME DESC/ASC
OFFSET 10 ROWS -- 건너 뛰는 라인 수
FETCH NEXT 10 ROWS ONLY; -- 출력 라인 수 

-- 처음부터 출력

SELECT * FROM TABLE_SCHEMA.TABLE_NAME
ORDER BY COLUMN_NAME DESC/ASC
OFFSET 0 ROWS 
FETCH NEXT 10 ROWS ONLY;

--** ORDER BY 구문이 꼭 필요함!!

728x90

'MSSQL' 카테고리의 다른 글

LOCK  (0) 2023.10.27
SQL 실행 이력 조회  (0) 2023.05.16
VERSION  (0) 2023.05.12
CTAS  (0) 2023.05.12
INDEX, TABLESPACE 조회 쿼리  (0) 2022.10.07

+ Recent posts