본문 바로가기

SQL Server

(81)
SQL Server 2008 암호화 - TDE (Transparent Data Encryption) SQL Server 2008부터 지원하기 시작한 새로운 암호화 방식으로 TDE가 있습니다. TDE를 사용하면 데이터 파일과 로그 파일을 실시간으로 I/O 암호화 및 복호화하게 되는데... 우리는 TDE를 사용함으로써 누군가에 의해 DB 백업파일 또는 데이터 파일이 유출된다해도 DB를 복원하지 못하도록 막을 수 있습니다. 이때, 데이터베이스 파일 암호화는 페이지 수준에서 수행되는데 암호화된 후 디스크에 작성되고 메모리로 읽어 들일 때 복화하되며 데이터베이스의 크기는 증가하지 않습니다. 위 그림을 아래에서 위로 거꾸로 살펴보면 아래와 같이 정리할 수 있습니다. - 데이터베이스는 데이터베이스 암호화 키(DEK)에 의해 대칭키 암호화 - 데이터베이스 암호화 키는 인증서에 의해 암호화 - 인증서는 데이터베이스 마..
SQL Server 로그인 및 사용자 권한 정책 오늘은 SQL Server 사용자 권한 정책에 대해 얘기 해 보겠습니다. 이하의 내용은 저희 회사에서 제가 사용하는 방법으로... 당연한 얘기지만 이 방법이 모든 경우에 적합하다고 볼 수는 없습니다. 첫번째 고민 : Windows 인증을 사용할까? SQL Server 인증을 사용할까? 일반적인 권고는 Windows 인증입니다. 아무래도 여러사람에 의해 공유되는 SQL Server 인증은 관리면이나 보안면에서 좋지 않을테니까요. 하지만 SQL Server 인증을 아예 사용하지 않는 것도... 현실적으론 어렵더군요. - Windows 도메인 로그인을 가지고 있는 사람들... DBA, 개발자와 같은 이들에게는 Windows 인증을 사용합니다. - 웹 서버, 미들웨어 서버 등의 어플리케이션 서버는 SQL Ser..
affinity mask, affinity I/O mask, soft NUMA 적용 SQL Server에서는 CPU 및 I/O의 affinity를 지정할 수 있습니다. 목적은 CPU를 특정 스레드에 할당하여 컨텍스트 스위치를 줄임으로써 성능을 향상시키는 것입니다. 물론 대부분의 경우 OS가 컨트롤 하도록 놔두는 것이 더 좋습니다. 그럼 어떤 경우에 이런 설정이 필요할까요? - 멀티 인스턴스 환경에서 인스턴스 별로 CPU를 할당하고 싶다. - 단일 인스턴스 환경에서 CPU 집약적 작업과 디스크 I/O작업의 비율이 극단적으로 다를 때, 각 작업에 CPU를 할당하고 싶다. - 위 두가지 모두... 이 정도 이유가 있을 듯 하네요. 각 옵션의 기능은 아래와 같습니다. - affinity mask 옵션을 사용하면 SQL Server 인스턴스가 사용할 CPU를 지정 - affinity I/O ma..
ER/Studio 8.0 New Features Guide ER/Studio 8.0에 새로 추가된 기능 리스트 문서가 있어 링크합니다. ER/Studio 8.0 New Features Guide 요약 Visual Data Lineage Attribute-level Submodeling LDAP and Active Directory Integration Object-level Compare Flags Wizard and Editor Improvements - User-Defined Mapping Supports Definitions and Attachments - Infer Foreign Keys when Declared Referential Integrity (RI) Dependencies Exist User Interface Improvements - Appl..
SQL Server 2005 암호화 안쓰면 쉽게 잊는다지만... 나이 때문일까? 머리 속 지우개 성능이 갈수록 좋아지고 있다. ㅎㅎㅎ 매번 BOL 찾아 보기도 좀 그렇고... 복습하기 쉽게 간단히 정리해 봅니다. SQL Server 2005의 암호화 계층은 아래와 같습니다. 이 그림을 보면 데이터라는 박스를 3곳에서 찾을 수 있습니다. 각 데이터 박스의 바로 윗 계층을 읽어보면 인증서, 대칭키, 비대칭키입니다. 즉, 데이터를 암호화하는데 사용되는 것에는 인증서, 대칭키 그리고 비대칭키가 있다... 라는 의미가 되겠죠. 실제로 SQL Server 2005에서 데이터를 암호화하는 함수로는 아래의 4가지 함수를 제공하고 있습니다. - EncryptByAsmKey() : 비대칭키를 사용하여 암호화 - EncryptByCert() : 인증서를 사용..
INSERT 스크립트 생성하기 테이블 내용을 읽어 INSERT문을 생성해 주는 스크립트는 거의 누구나 가지고 있으리라 생각합니다. 저도 누군가의 스크립트를 가지고 있는데... 버그가 좀 있습니다. 그래서 오늘 하나 만들어 봤습니다.. master.sys.fn_varbintohexstr 함수를 사용해 봤는데 꽤 유용하네요. 하지만, 저도 완벽하게는 못 만들겠더군요. 다음과 같은 제한 사항이 있습니다. - SQL 2005와 SQL 2008에서 사용할 수 있습니다. - 사용자 정의 형식, hierarchyid 형식은 지원하지 않습니다. - float와 real 형식은 데이터가 손상 될 수 있습니다. - binary, varbinary, image는 3998 byte까지만 지원합니다. 소스는 아래 박스를 참고하세요. p.s 해당 SP의 두번..
ER/Studio 8.0.3 DB모델링에 ER/Studio를 사용한지 몇 년 되는군요. 처음엔 ER-Win을 사용했었는데 ER/Studio를 접한 이후 다른 CASE툴은 사용하지 않고 있습니다. ^^; 처음에 7.0을 사용했고 1년 반정도 7.5를... 그리고 오늘 8.0으로 업데이트했네요. 사실 회사 옮긴 직후 ER/Studio 구매 요청을 했고, 그 때 구입한 버전은 7.6이었습니다. 불행히도 7.6은 매우 불안정한 버전이었는데... 7.5에서 작성한 파일을 읽거나, 특정 세팅의 SQL Server를 Reverse Engineering하면 비정상 종료되곤했습니다. 할 수 없이 7.5로 다운 그레이드한 채 1년 반을 지냈죠. ㅎㅎ 얼마전 엠바카테로에서 데브기어라는 사이트를 오픈하고 데이터베이스 툴 런칭 행사를 했었죠. 저도 참석하..
XML을 사용하여 문자열 Split 하기 문자열을 특정 구분자를 기준으로 split하는 방법에는 여러가지가 있습니다. 제가 최근까지 사용하던 방법은 순번(sequential number)이 들어있는 테이블을 이용한 방법이었습니다. 그래서 제가 디자인한 데이터베이스에는 항상 Tally라는 테이블과 IF_Split이라는 인라인함수가 들어있죠. SELECT TOP 10000 IDENTITY(int, 1, 1) AS n INTO dbo.Tally FROM master.dbo.syscolumns A CROSS JOIN master.dbo.syscolumns B GO ALTER TABLE dbo.Tally ADD CONSTRAINT PK_Tally PRIMARY KEY CLUSTERED (n) GO CREATE FUNCTION dbo.IF_Split ( ..