본문 바로가기

MS SQL Server

SQL Server - Availability Group - AG Role Check by Database --DB별 AG RoleCheck SELECT DBS.database_id , DBS.name , isAGDB = CASE WHEN AG.group_id is null THEN N'N' ELSE N'Y' END , replicaRole = CASE WHEN AG.group_id is NOT null AND AGS.primary_replica = @@SERVERNAME THEN N'Primary' WHEN AG.group_id is NOT null AND AGS.primary_replica @@SERVERNAME THEN N'Secondary' END , AGGroupID = AG.group_id , AGName = AG.name , PrimaryReplica = AGS.primary_replica , P.. 더보기
CMD 명령어로 SQL Server Edition Upgrade :SQL Server Edition Change Script (Standard to Enterprise Core) (약 80초 소요) :SQL 2016 Edition Upgrade echo %date% %time% "C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\SQLServer2016\setup.exe" ^ /Q /IACCEPTSQLSERVERLICENSETERMS /Action="EditionUpgrade" ^ /INSTANCENAME=MSSQLSERVER ^ /PID="$InputYourLicenseKey$" echo %date% %time% pause :SQL 2014 Edition Upgrade echo %date% %time% "C:\P.. 더보기
SQL Server 원하는 누적업데이트(CU) 찾기 기존에는 누적업데이트를 적용할 때, SQL Server Builds에서 다운로드 하고자 하는 누적 업데이트(Cumulative Update, 이하 CU) 버전을 확인하고, 해당 업데이트 KB문서에 링크된 Download Center URL을 통해 누적 업데이트를 다운로드 받았습니다. 그런데, 2016년 이후, SQL Server에 대한 Incremental Servicing Model (ISM)이 변경되면서, CU 업데이트 관련 KB문서에는 Latest Cumulative Update에 대한 Download Center URL만 링크 되도록 변경 되었습니다. - Announcing updates to the SQL Server Incremental Servicing Model (ISM) : https:/.. 더보기
MSDTC > DTCPing이 성공 했지만, 분산트랜잭션 수행 시 "No transaction is active." 오류가 발생하는 경우 안녕하세요. SQL Server Linked Server를 통한 분산 트랜잭션에서, MS DTC 설정과 관련하여 다른 문제가 없었는데도, No Transaction is Active 오류가 발생하는 경우에 대한 경험을 공유합니다. - 현상OLE DB provider "SQLNCLI11" for linked server "LNKD_Test" returned message "No transaction is active." Msg 7391, Level 16, State 2, Procedure SP__Test, Line ##The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "LNKD_Test" was.. 더보기
SQL Server 2016 업그레이드 이후, DB 복원 성능 저하 이슈 금번 SQL Server 2016 (SQL 2016 SP1 CU8) 업그레이드 이후, Restore Server의 복원(Restore Database)수행 속도가 크게 저하되는 이슈가 있어, 원인 및 현상을 분석한 내용과, 대응 방안을 함께 공유합니다. 1. 현상환경 구분OS/DBBackup / Restore OptionDB InformationRestore ServerWindows Server 2012 R2 STD x64 SQL Server 2016 STD SP1 CU8 x64 (13.0.4474)Compressed / DefaultDatabase Info:Reserved: 380,752MiB Compressed Backup: 138,240MiB Compatibility Level 100Server S.. 더보기
MSDB 실행일정 date type으로 변경하기 MSDB의 실행 일정을 보면 run_date (int): 20180413, run_time (int): 40330 과 같은 형식으로 되어있어서, 보기 힘고 파싱하기 귀찮다. 그런경우 다음의 쿼리를 써서 Date, Time 포멧으로 Casting 할 수 있다. --sysjobschedules date값 date,time 포맷으로 변경SELECTtop 1000date=CAST(CAST(next_run_date as nvarchar(100)) AS date),time=CAST(--hhCASEWHEN REVERSE(SUBSTRING(REVERSE(CAST(next_run_time as nvarchar(100))),5,2)) N''THEN REVERSE(SUBSTRING(REVERSE(CAST(next_run_t.. 더보기
SQL로 날짜계산하기 지난주 월요일CAST(DATEADD(DAY,((-1*DATEPART(WEEKDAY,getdate()-7))+1),getdate()-7) AS date) --지난주 월요일 더보기
SQL Server 프로그래밍기능 파라미터 검색 쿼리 SQL Server 프로그래밍기능(Stored Procedure 등) 파라미터 검색 쿼리 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTEDGO USE tempdbGO--SQLDBWook(sqldbwook@gmail.com)SELECT PROC_NM = object_name(PRM.object_id) , PARAM_NM = PRM.name , PARAM_TYPE = TYP.name + CASE WHEN TYP.name IN ('nvarchar','nchar','varchar','char','varbinary','binary') THEN CASE WHEN PRM.max_length = -1 THEN '(max)' WHEN TYP.name IN ('nvarchar','nc.. 더보기
tempdb 파일 삭제하기 Remove tempdb Data Files ---------------------------sqlcmd -S. --적절한 크기까지 키우고USE [master]GOALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'tempdev', SIZE = 1024MB )GOUSE tempdbGODBCC SHRINKFILE (N'tempdev2' , EMPTYFILE) --shrink to 3000 MBGOALTER DATABASE tempdb REMOVE FILE tempdb2;GODBCC SHRINKFILE (N'tempdev3' , EMPTYFILE) --shrink to 3000 MBGOALTER DATABASE tempdb REMOVE FILE tempdb3;GODBCC SH.. 더보기
대량의 트랜잭션으로 인한 LogShipping 복원 지연시, 최종 복원일자 찾기 아래 쿼리를 통해, LogShipping Log 복원이 주 서버에서 언제 백업된 파일까지 복원했는지를 찾을 수 있다. -- USE msdbGO /*2015-03-16 SQLDBWook@gmail.com / SQL Server 2012*/--Primary 서버에서 대량의 트랜잭션이 발생한 이후, --LogShipping Secondary 서버의 IO병목등의 이유로 인해 Log복원 대기가 발생할 시 --현재까지 복원된 Log 중 최종 LogFile의 백업일시를 구한다.DECLARE @vLogShippedDatabaseName sysname= N'trigger_sync_db_from_local_pcbang',@vDateChkVal char(2)= LEFT(YEAR(getdate()),2) SELECTDATEA.. 더보기