본문 바로가기

DB/mssql

(37)
[mssql] SP에서 특정 TEXT 검색 use {{databaseName}} SELECT DISTINCT 'EXEC sp_helptext [' + SCHEMA_NAME(SCHEMA_ID) + '.' + OBJECT_NAME(A.id) + ']' FROM sys.syscomments A INNER JOIN sys.objects B ON A.id = B.object_id WHERE TEXT LIKE '%{{검색어}}%' SELECT OBJECT_NAME(object_id) FROM sys.sql_modules WHERE definition LIKE '%{{검색어}}%' 출처 : http://modellerr.tistory.com/35
[mssql] 튜닝 #1 - insert , delete 로 인한 duration sql profiler 를 돌려보면 read / write row는 별로 없지만 duration 이 2000 ms 이상 씩 잡히는 쿼리들이 있습니다. 아무리 index 와 나누기 실행을 해도 쿼리 실행 시간이 줄어들지 않습니다. 이유는 db 의 복구 모델의 구분에서 찾을 수 있는데요. insert, delete 시에는 로그를 생성하는데 전체, 대량로그 모델의 경우 로그 생성까지 실행 시간에 포함됩니다. 이런 작업들이 빈번한 테이블만 따로 단순 복구 모델의 db로 모아서 처리하면 insert,delete 로 인한 비용이 발생하지 않습니다. 단순 모델의 db에 적당한 테이블의 성격을 정리하면 1. 빈번하게 select 되는 퍼포먼스를 요하는 테이블 2. 원시 데이터가 존재하고 가공된 정보를 모으는 테이블 정..
[mssql] 트랜잭션 로그가 꽉 찼습니다. 데이터베이스를 만들고 한 번도 로그 백업을 하지 않으면 만날 수 있는 에러 메세지입니다. 정기적으로 트랜잭션 로그백업을 하고 크기를 줄여주어야 하는데요. 자동 축소 옵션이 있으나 오버로드가 존재하며 직접 크기를 줄여주는 작업을 해주어야 합니다. step 1 비상 트랜잭션 백업하기 트랜잭션 백업하기(SSMS) step 2 백업로그 파일 크기 줄이기 참조 : 트랜잭션 로그 파일의 크기 관리 https://msdn.microsoft.com/ko-kr/library/ms365418.aspx 꽉 찬 트랜잭션 로그 문제 해결(SQL Server 오류 9002) https://msdn.microsoft.com/ko-kr/library/ms175495.aspx 로그 자동축소에 관한 글 http://www.sqler.c..
[sql] 비상 로그(트랜잭션로그) 백업 //비상 로그(트랜잭션로그) 백업 – 장애 발생시 현재까지의 트랜잭션 로그 백업을 진행합니다. // WITH NORECOVERY 로 백업 중 상태를 만든 후 백업을 진행하고 복구를 진행한다.//복구 과정에 에러 메세지를 보고싶지 않다면 비상로그 백업을 꼭 해야합니다. USE MASTER; BACKUP LOG {{db_name}} to DISK = 'C:\Backup\TransactionLog\{{db_name}}\{{db_name}}_backup_2017_04_24_142101_EMRGENCY.trn' WITH NORECOVERY
[sql] 전체, 차분, 트랜잭션로그 복구 스크립트 //전체, 차분, 트랜잭션로그 백업이 이미 되어 있다는 가정하에 구동되는 스크립트입니다. USE MASTER GO RESTORE FILELISTONLY FROM DISK='C:\Backup\Full\{{db_name}}.bak' RESTORE DATABASE {{db_name}} FROM DISK = 'C:\Backup\Full\{{db_name}}.bak' WITH RECOVERY, REPLACE GO // 백업 중 상태에서 일반 상태로 변경 RESTORE DATABASE {{db_name}} WITH RECOVERY //복구 – Sql Management 에서 GUI 로도 가능한 작업입니다.//전체 백업 복구 – c:\Backup\Full 안에 전체 백업이 있다고 가정 //WITH 옵션 – 복구 중 ..
[sql] 백업 파일 크기 줄이기 use {{db_name}}; //로그파일 백업//복구나 변경 사항이전에 백업은 필수 backup log {{db_name}} to disk='d:\Backup\{{db_name}}.trn' //로그 파일이 줄어들지 않을때(2008 이상) DECLARE @LogFileLogicalName sysname = NULL ALTER DATABASE {{db_name}} SET RECOVERY SIMPLE GO SELECT @LogFileLogicalName = [Name] FROM sys.database_files WHERE type = 1 // 검색 된 LogFileLogicalName 은 {{db_name}}_log 입니다.// 줄이고 싶은 크기는 db > 속성 > 파일 > 최초 용량 이상을 정해줘야 합니다..
[msdn] 백업,복구 관련 기본 지식 백업과 복구에 앞서 꼭 읽어야 할 내용 입니다. 방법: 데이터베이스의 복구 모델 보기 또는 변경(SQL Server Management Studio) https://technet.microsoft.com/ko-kr/library/ms189272(v=sql.105).aspx 복구 모델 개요 https://technet.microsoft.com/ko-kr/library/ms189275(v=sql.105).aspx 백업 비상 로그 백업 ***** https://technet.microsoft.com/ko-kr/library/ms179314(v=sql.105).aspx BACKUP LOG database_name TO WITH NORECOVERY 백업모델 방법: 차등 데이터베이스 백업 만들기(Transact-S..
[function] 문자열에서 숫자만 뽑아내기 CREATE FUNCTION fn_GetNumeric (@strAlphaNumeric VARCHAR(256)) returns VARCHAR(256) AS BEGIN DECLARE @intAlpha INT SET @intAlpha = Patindex('%[^0-9]%', @strAlphaNumeric) BEGIN WHILE @intAlpha > 0 BEGIN SET @strAlphaNumeric = Stuff(@strAlphaNumeric, @intAlpha, 1, '') SET @intAlpha = Patindex('%[^0-9]%', @strAlphaNumeric) END END RETURN Isnull(@strAlphaNumeric, 0) END 예) SELECT dbo.fn_GetNumeric('1..