MSSQL 103

SA 계정 이름 변경 및 비활성화

SA 계정 이름 변경 및 비활성화 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SQL Server를 설치하면 기본적으로 SA 계정이 생성되어 사용된다. 보안 규칙이 잘 정의된 조직이라면 SA에 대한 보안에 많은 신경을 쓰지만 일부 조직에서는 SA를 기본적으로 사용하는 곳도 많다. SA 계정은 외부 위협으로부터 많이 사용되는 계정이므로 보안을 강화하거나 비활성화 하여 노출을 최소화하는 것이 좋다. SA 계정에 대한 보안을 강화하기 위한 방법은 크게 4가지가 있다. 암호를 추측할 수 없도록 복잡하게 구성한다. SA의 이름을 변경한다. SA를 사용하지 않도록 비활성화 한다. 다른 계정 이름이 SA가 없는지 확인한다. [SA 로그인 이름 바꾸기] SSM..

SQL Server 데이터베이스 속성을 확인할 때 사용되는 master.dbo.spt_values 복구

SQL Server 데이터베이스 속성을 확인할 때 사용되는 master.dbo.spt_values 복구 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SSMS에서 SQL Server의 속성을 클릭하였을 때 master.dbo.spt_values 오류가 발생하였을 때 해결하는 방법에 대해서 알아본다. SSMS에서 서버 속성을 클릭하였을 때 master.dbo.spt_values 오류가 발생하면 다음과 같은 경고문이 나타난다. master.dbo.spt_values 프로시저는 다양한 데이터 항목을 포함하는 문서화 되지 않은 항목이다. 이 프로시저는 C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\..

XML로 생성된 정보를 테이블로 저장하기(sp_xml_preparedocument)

XML로 생성된 정보를 테이블로 저장하기(sp_xml_preparedocument) Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 XML로 작성된 정보를 파싱하여 테이블로 저장하는 방법에 대해서 살펴본다. SQL Server에서제공되는 sp_xml_preparedocument 프로시저와 OPENXML 함수 기능을 함께 사용하여 편리하게 XML데이터를 사용할 수 있다. sp_xml_preparedocument는 입력으로 제공되는 XML 텍스트를 읽고 MSXML 파서(Msxmlsql.dll)을 사용하여 텍스트의 구문을 분석하여 사용할 수 있는 상태로 제공한다. sp_xml_preparedocument는 XML문서의 새로 생성된 내부 표현에 액세스하는데..

SQL Server 2016 SSMS 새로운 기능

SQL Server 2016 SSMS 새로운 기능 Version : SQL Server 2016 SQL Server 2016에서 새롭게 소개된 SSMS의 새로운 기능에 대해서 살펴본다. [인터넷에서 SSMS 설치] 클라이언트 도구인 SSMS를 설치하기 위해 더 이상 SQL Server DVD가 필요하지 않게 되었다. SQL Server 데이터 도구처럼 인터넷에서 다운로드 하는 웹 설치 프로그램을 사용한다. SSMS 다운로드 : https://msdn.microsoft.com/en-us/library/mt238290.aspx [SSMS 업데이트 확인] SSMS에서 온라인으로 업데이트를 확인하여 사용자가 클릭으로 업데이트를 진행 할 수 있다. 아래 이미지는 SQL Server 2014와 2016 버전의 도구..

DBCC DROPCLEANBUFFERS가 작동하지 않을 때

DBCC DROPCLEANBUFFERS가 작동하지 않을 때 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 DBCC DROPCLEANBUFFERS는 버퍼 풀에서 빈 버퍼를 모두 제거하는 명령이다. 이 명령을 사용하면 서버를 종료하고 다시 시작하지 않아도 완전히 빈 버퍼 캐시를 사용하여 쿼리를 테스트할 수 있다. 버퍼풀에서 빈 버퍼를 삭제하려면 CHECKPOINT를 사용하여 빈 버퍼 캐시를 만든다. CHECKPOINT는 현재 데이터베이스에 대한 모든 커밋되지 않은 페이지를 디스크로 기록하고 버퍼를 비운다. 다음 내용은 DBCC DROPCLEANBUFFERS 사용하어 빈 버퍼를 제거한 상태에서 SELECT를 이용하여 데이터를 조회하였는데 물리적 읽기가 ..

손상된 부트페이지 복구하기

손상된 부트페이지 복구하기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 데이터베이스 장애 중 큰 이슈는 부트페이지 손상이다. 부트 페이지가 손상된 경우에는 데이터베이스를 온라인 또는 긴급 모드로 전환될 수 없다. 이번 포스트는 손상된 부트페이지를 복구하는 방법에 대해서 알아본다. 부트 페이지를 손상하고 복원하기 위한 테스트 데이터베이스를 생성한다. 생성된 데이터베이스를 분리하여 데이터파일에 사용자가 접근할 수 있도록 한다. -- Drop old database USE [master]; GO IF DATABASEPROPERTYEX (N'Company', N'Version') > 0 BEGIN ALTER DATABASE [Company] SET SI..

Temp table 객체 생성시 세션간 충돌하지 않는 이유

Temp table 객체 생성시 세션간 충돌하지 않는 이유 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 데이터베이스를 사용할 때 temp table(임시 테이블)을 많이 사용한다. 단일 tempdb가 여러 세션에서 동일한 개체를 만드는 경우에도 어떻게 충돌을 방지할 수 있을까? 다음 간단한 테스트를 통해서 임시테이블 생성과 충돌 방지에 대해서 알아본다. 아래 스크립트는 임시 테이블을 생성한다. -- Session 1: Table creation CREATE TABLE #temptable_test ( id INT NOT NULL IDENTITY (1,1) ,Name CHAR(100) NOT NULL ,DOJ DATETIME NOT NULL ); 테..

SQL Server 데이터베이스 메일 계정 수정

SQL Server 데이터베이스 메일 계정 수정 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 SQL Server에서 제공하는 데이터베이스 메일 기능을 사용하면 SQL Server에서 발생하는 다양한 이벤트를 관리자에게 이메일로 발송할 수 있다. Tempdb 증가시 이메일로 경고 받기 : http://sqlmvp.kr/220067810433 SQL Server 데이터베이스 메일은 SMTP 서버 이름, 포트번호, 이메일 주소 등을 이용하여 메일을 발송한다. 이번 포스트는 생성된 데이터베이스 메일의 계정 및 기타 정보 수정방법에 대해서 알아본다. 데이터베이스 메일 정보 수정은 SSMS 및 T-SQL로 가능하다. [SSMS로 데이터베이스 메일 정보 변경..

XEvent(확장이벤트)를 활용한 활성 로그 모니터링 하기

XEvent(확장이벤트)를 활용한 활성 로그 모니터링 하기 Version : SQL Server 2012, 2014 XEvent의 file_wirte_complete, transaction_log 이벤트를 사용하여 트랜잭션이 커밋될 때 트랜잭션 로그 파일에 기록되는 것을 모니터링할 수 있다. 실습을 위해 테스트 테이블을 생성한다. CREATE TABLE TestTable ( c1 INT IDENTITY, c2 CHAR (1000) DEFAULT 'a'); GO INSERT INTO [TestTable] DEFAULT VALUES; GO XEvent를 설정한다. -- Drop the session if it exists. IF EXISTS ( SELECT * FROM sys.server_event_sess..

특정 사용자에 대한 트랜잭션 로그 찾기

특정 사용자에 대한 트랜잭션 로그 찾기 Version : SQL Server 2005, 2008, 2008R2, 2012, 2014 SQL Server에서 일어나는 모든 일은 트랜잭션 로그에 기록 된다. 이전에도 트랜잭션로그를 이용하여 삭제된 데이터를 복구하거나 트랜잭션 발생 시간 및 사용자 찾는 방법에 대해서 다룬적이 있다. SQL Server 트랜잭션 로그 읽기 : http://sqlmvp.kr/140202102618 트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 : http://sqlmvp.kr/140206499367 SQL Server에서 Drop 및 Delete 사용자 찾기 : http://sqlmvp.kr/140202164558 변경된 테이블 이름 복구하기 : http://sqlmvp...