SQL Server 2005
2008. 02. 02.
안혁
http://hyok.kr



SQL  Server 2005에서 제공하는 백업/복원을 사용하여 데이터베이스를 복원할 수도 있겠지만, DB 전체에 대하여 복원하는 것은 매우 번거로운 작업입니다. 기존 DB에 대한 mdf/ldf 파일들이 존재한다면 master DB만 복원하여 전체 데이터베이스를 복원할 수 있습니다.(데이터베이스 서버 이전 작업 또는 OS 재 설치의 경우가 이에 해당 - 데이터 베이스 백업 파일만 존재한다면 일반적인 복원 절차를 진행해야 할 것임)

먼저 mdf/ldf 파일들이 기존 사용되던 위치에 존재해야 합니다. master DB에 모든 데이터베이스에 대한 정보(데이터베이스 파일의 위치 역시 가지고 있음)가 존재하므로, 복원 후에 그 정보를 사용하여 데이터베이스를 연결하려고 할 것입니다. SQL Server 2005를 기존에 설치했던 위치와 동일하게 설치하고, mdf/ldf 파일 역시 이전과 동일한 위치에 복사합니다.

다음으로 전체 데이터베이스에 대한 정보를 가지고 있는 master DB를 복원만 하면 전체 데이터베이스에 대한 복원 작업이 완료됩니다. master DB는 시스템 데이터베이스이므로 Single Mode에서 작업해야합니다. 저는 D 드라이브에 SQL  Server 2005가 설치되어 있는 것으로 진행합니다.

cd "d:\Program Files\MicrosoftSQL Server\MSSQL.1\MSSQL\Binn"
sqlservr.exe -m


명령어 철자에 주의하세요. server이 아닙니다. servr입니다. 이미 실행중이라면 다음처럼 사용 중이라는 에러가 발생할 것입니다.

사용자 삽입 이미지

이런 경우에는, mssqlserver 서비스를 종료하고 다시 실행하세요.

net stop mssqlserver


제대로 실행하면 조금은 다른 메세지들이 출력됩니다.

사용자 삽입 이미지

Single Mode로 실행되면 다른 명령 실행 창에서 sqlcmd.exe를 실행하고 다음 명령을 입력합니다.

RESTORE DATABASE [master] FROM DISK = N'D:\Backup\master.bak' WITH REPLACE, RECOVERY

GO

물론 백업 파일의 위치는 상황에 따라 달라질 수 있겠습니다. 명령이 실행되면 sqlservr.exe는 종료됩니다. mssqlserver 서비스를 시작합니다.

net start mssqlserver


이렇게 하면 전체 데이터베이스가 모두 복원되어 있는 것을 확인할 수 있습니다. mdf/ldf 파일이 존재하지 않는 데이터베이스는 로딩이 안됩니다. 이렇게 하면 한가지 작업만이 남습니다.

복원을 모두 했는데 더 무슨 작업이 필요할까요?  복원이 모두 끝난 것 처럼 보이지만, 연결된 서버 작업 시 문제가 발생합니다.

사용자 삽입 이미지

SQL Server 2005가 되면서 보안적인 요소가 강화되었다고 합니다. 서비스 마스터 키라는 개념이라고 하는데요.쉽게 이야기 하자면, 기존에 사용하던 키도 백업해뒀다가 master DB를 복원할 때 같이 복원해야한다는 것입니다. 옛날 자물쇠를 새 자물쇠용 열쇠로 열려고 하니 안된다는 것이지요. 옛날 자물쇠용 열쇠가 필요합니다.

마지막 작업은 간단합니다. 이전 SQL Server에서 서비스 마스터 키를 백업 받아 새로운 SQL Server에 복원하는 것입니다. 명령어는 다음과 같습니다.

BACKUP SERVICE MASTER KEY TO FILE = 'c:\ServiceMasterKey' ENCRYPTION BY PASSWORD = 'P@ssw0rd'

RESTORE SERVICE MASTER KEY FROM FILE = 'c:\ServiceMasterKey' DECRYPTION BY PASSWORD = 'P@ssw0rd' FORCE

복구 시 FORCE가 있는 이유는 그렇지 않으면 실행이 안되기 때문입니다. 암호 해독을 못하겠다면서 말이죠. 이 작업을 마지막으로 복원은 완료됩니다.

서비스 마스터 키에 대하여 더 자세히 알고 싶다면 다음의 문서를 참고하세요.

http://technet.microsoft.com/ko-kr/library/ms189586(SQL.90).aspx
http://msdn.microsoft.com/ko-kr/library/ms187788.aspx
Posted by 안혁 windfruit

SQL Server 2008
2008. 8. 13.
안혁
http://hyok.kr


참고자료: http://blog.magenic.com/blogs/whitneyw/archive/2008/05/04/Backward-compatibility-for-IntelliSense-please.aspx


SQL Server 2008 CTP 버전때만 해도 SQL Server 2005에 연결했을때 Intellisence가 작동하였는데, 정작 정식버전이 나오고 보니(사실 RC0 버전 부터...) SQL Server 2008만을 지원하고 있습니다. 호환성이나 성능, 문법등의 문제로 인하여 기존 버전은 지원하지 않는 것이 디자인이라고 하는군요. 정확한 내용은 위의 링크를 확인해주세요.

Posted by 안혁 windfruit

[관련분야]
2008. 8. 13.
안혁
http://hyok.kr


참고자료: http://www.galcho.com/Blog/PermaLink.aspx?guid=4afabe28-002a-409b-9076-f7f6ee6bd55e


SQL Server 2008 설치 시 Visual Studio 2008이 설치 되어 있는 경우

Rule "Previous releases of Microsoft Visual Studio 2008" failed


위처럼 Visual Studio 2008 SP1 설치를 요구합니다만,
저의 경우 SP1을 설치하여도 SP1을 설치해달라는 어이없는 에러가 발생하여
관련 자료를 찾던 중 Visual Studio2008이 설치되어 있지 않는 것처럼 보이게 하는
잔기술을 발견하였습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\VS\Servicing\9.0

위의 레지스트리 이름(9.0)을 변경하시면(아무렇게....마음대로...)
Visual Studio 2008이 설치되어 있지 않다며 발생하던 에러가 사라집니다.
일단, SP1을 제대로 설치했으니 문제 될 것은 없으리라 생각됩니다.
설치가 끝나면 다시 원래대로 수정하세요.
Posted by 안혁 windfruit

SQL 2008
2008. 8. 11.
안혁
http://hyok.kr



SQL 2008 정식 버전이 출시 되었습니다.

https://technet.microsoft.com/ko-kr/subscriptions/securedownloads/default.aspx



MSDN 구독자는 다운로드 가능하겠습니다.
아직은 아니지만, 조만간 다음 경로로 평가판 및 Express 버전을 받으실 수 있으리라 생각됩니다.

http://www.microsoft.com/korea/sql/2008/prodinfo/download.mspx


이번 버전에서 여러가지가 좋아졌겠지만,
가장 마음에 드는 기능은
쿼리 작성 시 '인텔리 센스'  기능이네요.

Posted by 안혁 windfruit

SQL Server 2005
2008. 2. 22.
안혁
http://hyok.kr


기본적으로는 SQL Server 2005는 Office 2007 문서에 대하여 인덱싱을 지워하지 않습니다. Office 2003이라면 되지요. 이것을 가능하게 하는 방법을 MS가 잘 정리해 두었군요. 작년부터 이 문제로 질문을 MS가 많이 받을텐데, 특별한 문서를 찾지 못해서 오랫동안 이를 잊고 있었는데, 검색하여 보니 MS 문서가 있군요.

http://support.microsoft.com/kb/945539

Office 2007의 IFilter를 SQL Server 2005가 설치된 서버에 설치되어야 합니다. 이를 위하여 Office를 해당 서버에 설치합니다. 그리고 나서 SQL Server Management Studio에서 다음 명령을 실행합니다.

sp_fulltext_service 'load_os_resources', 1

서버의 msftesql 서비스를 재시작 하여야 합니다.

net stop msftesql
net start msftesql

또는 다음과 같이 해도 된다고 하네요.

net stop msftesql$인스턴스명
net start msftesql$인스턴스명

설정 방법은 이상과 같습니다만,
안타깝게도 이는 x86용 SQL Server에서만 가능하다고 합니다. 설치한 Office 2007이 x86버전 밖에 없기 때문입니다.

 

Posted by 안혁 windfruit

Microsoft SQL Server 2005
2007. 4. 26.
안혁
http://hyok.kr

 일반적으로 게시판에 첨부파일을 추가할 경우, 이를 디스크의 특정 폴더안에 파일명이 겹치지 않도록 특별한 규칙을 적용하여 저장해둔 첨부파일에 대한 요청이 있을 시에 디스크에서 읽어내어 원래의 파일명으로 내려주는 형식을 취합니다. 아무래도 초창기에는 이외의 방법은 없었다고 보여지고, 이후에는 '그렇게 하면 된다'라는 방식의 기술 전수가 이루어져서 그런 것이 아닐까 생각해봅니다.
 
데이타베이스(이하 DB) 파일이 저장가능하게 된건 언제부터인지 모르겠으나, 덕분에 우리는 글을 저장하듯 파일도 DB 저장할 있는 것이지요. 하지만 그간 DB 파일을 저장하는 것은 매우 지양되던 방식이었습니다. 디스크에 파일을 저장하고 읽어내는 것과 비교했을때 매우 속도의 차이를 보였기 때문이지요. 아무래도 개발자의 편의성과 사용자를 위한 성능을 비교했을때, 후자쪽을 선택하는 것은 이전이나 지금이나 차이는 없는 같습니다.



 SQL Management Studio
실행한 개체탐색기(왼쪽 트리) 관리 하위를 보면 전체 텍스트 검색 찾을 있습니다. 마우스 오른쪽 버튼을 클릭하여 보면 시작, 중지, 다시 시작 등의 컨텍스트 메뉴를 확인할 있는데, 여기서 시작 회색(선택할 없다는 의미)이면 DB에서 전체 텍스트 검색 기능을 사용할 있다는 의미입니다. 그렇지 않다면 시작을 선택하여 주면 서비스를 사용할 것인지 확인하는 창이 뜨고 예를 누르면 서비스를 시작하는 창이 잠시 떳다가 사라집니다.



 
테이블을 마우스 오른쪽 버튼으로 클릭하게 되면 전체 텍스트 인덱스>전체 텍스트 인덱스 정의 메뉴를 확인할 있습니다. 파일이 저장되어 있는 테이블에서 해당 메뉴를 선택하면 다음과 같은 화면을 있습니다.





 
전체 텍스트 인덱스 정의하고자 하는 테이블에는 반드시 유일한 값을 가지는 컬럼이 존재하여야 합니다. 일반적으로 테이블에는 Primary Key 설정하므로 Primary Key 고유 인덱스 선택하면 됩니다.(Primary Key 또는 Unique 속성을 최소 하나의 컬럼에 적용한 테이블이어야 전체 텍스트 인덱스 정의가 가능합니다.)

 
다음으로 넘어가면 해당 테이블의 컬럼 목록을 확인할 있습니다. 창에서 어떤 컬럼을 검색 대상으로 것인지를 선택하게 됩니다. 우리가 하고자 하는 파일 검색은 저장된 파일의 확장자를 기록하고 있는 컬럼도 선택하여 주어야 합니다.

 

 
위의 그림에서 작업중인 테이블은 FileData(파일이 Image 타입으로 저장된 컬럼), FileType(파일의 확장자) 개의 컬럼으로 이루어져 있습니다. 전체 텍스트 검색 대상이 되는 FileData 컬럼을 체크했습니다. 그리고 추가적으로 FileType 컬럼을 FileData 유형 값으로 지정하였습니다. 이는 파일 검색에 있어서 대상이 되는 파일의 종류를 DB 있도록 해주는 것이며, 유형 기록되어 있는 확장자를 기준으로 필터가 지정되어 파일의 내용을 해석합니다. 그러므로 유형 열이 잘못 지정되거나, 파일 확장자가 잘못 저장되어 있다면 검색은 이루어지지 않게 됩니다. 저장되어 있는 파일의 정보를 읽어들여 파일 종류를 알아내는 것이 가능할 수도 있겠지만, 알고 있다면 알아내는 시간을 절약할 있게됩니다. 파일 검색은 비교적 일반 텍스트 검색과 비교하여 오래걸리므로 이런 방법이 필요하다 있겠습니다.
 
여기서는 검색 대상이 파일이기 때문에 유형 지정하지만, 만약 검색 대상이 Text 타입과 같은 문자열 컬럼이라면 DB 이를 처리할 있으므로 유형 지정할 필요가 없습니다. 유형 지정하는 이유는 해당 화일을 DB 이해할 없기 때문에 유형  통하여 하여 대신 읽어 필터를 지정하여야 하기 때문입니다. 그래서 지원되는 필터가 없다면 화일은 검색해낼 없는 것이 당연하지요. MS 오피스 문서, 텍스트 문서가 검색 대상이 된다고 있습니다.(HTML 문서는 검색에 문제가 있는 것으로 확인되었습니다)

 
기존 검색의 특징은 검색의 요청이 있을때에 검색 대상을 모두 일일이 확인하여 검색 조건에 만족하는 것이 있는지 찾는다는 것입니다. 검색 시간은 정보의 양에 비례한다고 있지요. 어떤 자료가 어디에 있는지는 알지 못하며, 단지 처음부터 끝까지 조사한다는 단순한 방식입니다. 무작성 섞여있는 카드에서 원하는 카드를 찾는 것보다는 순서대로 정리해놓은 카드에서 원하는 카드를 찾는 것이 훨씬 빠릅니다. 전체 텍스트 검색 이를 이용하는 것이며, 말은 찾기 전에 정리 단계가 필요하다는 말이기도 합니다.
 
전체 텍스트 검색이라는 기능을 사용하기 위하여 정리, 인덱싱 작업을 하여야만 합니다. 이로인하여 발생되는 문제는 검색 대상에 변화(자료의 추가, 삭제, 변경 ) 있을 경우 이를 정리-인덱싱해주지 않으면 검색은 올바로 이루어질 없게 됩니다. 저희 집에 전화를 설치했다고 해도 전화번호부에 이름이 추가되지 않으면 전화번호부에서 저를 찾을 없는 것과 같이 검색 대상에 변화가 있다면 이를 반영하기 전까지의 검색 결과는 실제 상태와 차이를 보일 있습니다
.



 
변경 내용 추적 선택 창에서 자동으로 설정하면 DB 직접 해당 테이블의 변경사항을 알아차려 인덱싱 되도록 도와줍니다. 관리자는 매번 인덱싱 해야하는 고민에서 벗어나 일을 DB 자동으로 하도록 설정할 있습니다. DB 인덱싱을 하게되면 하지 않을때보다는 CPU 사용하게 되므로 수동으로 하여 CPU자원이 충분할 때에 직접 인덱싱 하는 것이 더욱 효과적일 수도 있습니다. 인덱싱 주기가 길면 길수록 기능 사용의 목적을 달성하기 어려우므로 가장 적합환 선택을 하시기 바랍니다.



 
지금까지의 작업결과는 전체 텍스트 카탈로그 저장되게 됩니다. 원하는 방식으로 이름을 정하여 주시면 되며 다른 값은 기본값으로 두어도 무방합니다. 만약 카탈로그를 만드는 것이 처음이 아니라면 위쪽에 있는 전체 텍스트 카탈로그 선택에서 기존에 작성한 카탈로그를 선택할 있습니다.



 
체우기 테이블 내용이 바뀐 것에 대하여 인덱싱 작업이 이루어 지는 것을 말합니다. 특정 시간에 맞추어 테이블이나 카탈로그에 대하여 체우기가 실행되도록 설정할 있습니다.
 
다음을 누르면 최종적으로 이제까지의 설정을 확인할 있는 내용이 나오며, 확인을 클릭하면 전체 텍스트 인덱싱 정의 마무리되며, 바로 이어  전체 텍스트 인덱싱 생성 이루어집니다.


 
방금 만든 카탈로그는 다음과 같이 생성한 DB>저장>전체 텍스트 카탈로그에서 확인 가능합니다




 
설정이 이루어진 테이블 안에 넣어둔 파워포인트 파일를 검색해보겠습니다. 파일은 다음과 같은 2 문서로 구성되어 있으며, 검색이 되는 모습과 되지 않은 모습 모두 확인 있습니다.



 

 
위에서 보이는 글자 중에 '감사', 'Q/A' 두가지에 대하여 검색 해보겠습니다. 전체 텍스트 검색 CONTAINS 사용하며 다음과 같이 사용합니다.

      
SELECT * FROM dbo.tb_bo_AttachedFile
       
WHERE CONTAINS(FileData, '감사
');



 
위의 경우는 검색이 이루어진 경우이지만, 다음의 경우에는 3일만에 찾은 검색이 이루어지지 않는 경우 입니다
.

      
SELECT * FROM dbo.tb_bo_AttachedFile
      
WHERE CONTAINS(FileData, 'Q/A
');



 
전체 텍스트 검색 매우 강력한 기능이지만, 검색이 되지 않는 경우도 있음을 기억하셔야 합니다.

Posted by 안혁 windfruit

Microsoft SQL Server 2005
2007. 5. 31.
안혁
http://hyok.kr

 화일에 대한 전체 텍스트 검색 기능이 편리하지만, 기본적으로 MS 오피스 제품군+텍스트 문서에 대하여만 이루어진다는 것이 아쉬운 부분입니다.  화일의 내용을 해석하여 주는 필터가 없기 때문인데, 필터를 IFilter이라고 합니다. 여러 종류의 화일에 대하여 IFilter 존재는 하지만 일반적으로 유료입니다.(http://ifiltershop.com) 다행이도 Adobet에서 PDF IFilter 무료로 제공하기에 이를 추가하여 보겠습니다.
 
 * PDF IFilter
경로
http://www.adobe.com/support/downloads/thankyou.jsp?ftpID=2611&fileID=2457

 
위의 경로를 참고하여 SQL Server 설치된 환경에 IFilter 내려받아 설치합니다. 설치는 매우 간단하므로 설치에 대한 설명은 생략하도록 하겠습니다.

 
설치가 완료되면 SQL Server 이에 대한 설정이 필요합니다. SQL Management Studio 실행한   쿼리 클릭하여 다음을 각각 실행합니다.

    sp_fulltext_service 'load_os_resources', 1

    sp_fulltext_service 'verify_signature',
0

 
전자는 Microsoft Search Service 변동사항을 반영하게하는 명령이고, 후자는 바이너리가 서명되어 있는지 확인하는 절차를 생략하겠다는 명령입니다
.

 
명령이 성공적으로 실행되었다면, 다음과 같이 PDF 화일도 SELECT되는 것을 확인할 있습니다
.
 

Posted by 안혁 windfruit
이전버튼 1 이전버튼