database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Tutorials 452 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 452
SQL Server FAQ (3)
작성자
정재익(advance)
작성일
2002-07-16 23:48
조회수
20,689

엔터프라이즈 매니저(Enterprise Manager)

 

데이터베이스의 크기를 보면 데이터/로그 크기가 지정한 값보다 더 크게 나오고 여유 공간은 마이너스 값으로 나온다. 어떻게 하면 이 문제를 해결할 수 있는가? : 데이터베이스의 크기를 보면 데이터/로그 크기가 지정한 값보다 더 크게 나오고 여유 공간은 마이너스 값으로 나온다. 어떻게 하면 이 문제를 해결할 수 있는가?

 

해결 방법이 없다. 이 문제는 아래의 “로그가 꽉 차는 경우”에 대한 질문과 유사한 것인데 엔터프라이즈 매니저에서 데이터베이스의 크기를 정확하게 보여주지 못하는 버그는 이미 널리 알려진 것이다. 데이터베이스/로그의 정확한 크기를 확인하려면 sp_spaceused 스토어드 프로시저를 사용하면 된다.

 

Truncate를 했음에도 트랜잭션 로그가 계속 가득 차 있다고 나오는 이유는? : Truncate를 했음에도 트랜잭션 로그가 계속 가득 차 있다고 나오는 이유는?

 

dbcc, sqlperf, sp_spaceused, 엔터프라이즈 매니저 등과 같이 로그 스페이스를 확인하는 모든 툴에서는 시스템의 카다로그 정보인 sysindexes의 dpages 컬럼을 참조하기 때문이다. SQL Server 6.5 이하의 버전에서는 이 정보가 최신의 상태를 항상 반영하지는 않기 때문에 계속해서 틀린 값이 나오게 된다. 최신의 값으로 계속 갱신하게 되면 성능상의 병목현상을 일으킬 소지가 다분하기 때문이다.

 

이 정보를 정정하는 가장 간단한 방법은 다음과 같다.

 

엔터프라이즈 매니저에서 디바이스의 크기가 마이너스로 나오는 이유는? 이 때문에 아무것도 변경할 수 없는 상태이다. : 엔터프라이즈 매니저에서 디바이스의 크기가 마이너스로 나오는 이유는? 이 때문에 아무것도 변경할 수 없는 상태이다.

 

엔터프라이즈 매니저에서 디스크의 남은 공간이 2GB 이상 있는 경우에 발생하는 버그이며 6.5의 서비스 팩 3 이상에서 해결되었다. 클라이언트에서 엔터프라이즈 매니저를 사용한다면 클라이언트에도 서비스 팩 3를 인스톨하면 된다.

 

SQL Server에 숨어있는 "부활절 계란(easter egg)"은 없는가? : SQL Server에 숨어있는 "부활절 계란(easter egg)"은 없는가?

 

필자가 알고 있는 것은 6.5 버전의 엔터프라이즈 매니저에 있는 것 뿐이다(6.0에도 있겠지만 확인해 보지 않았음).

 

엔터프라이즈 매니저를 이용하여 starfighter라는 이름으로 새로운 서버 그룹을 생성한다.

 

이 서버 그룹에 IS COOL(공백 주의)이라는 이름으로 서버를 등록한다. 연결되지는 않을 것이므로 "Register anyway"를 클릭한다.

 

"IS COOL"을 선택하고 "About Box"를 클릭하면 개발팀을 볼 수가 있다.

 

다른 컴퓨터의 SQL Server에는 접속이 잘 되는데 로컬 컴퓨터의 SQLㅤServer에 엔터프라이즈 매니저로 접속할 수 없는 이유는? : 다른 컴퓨터의 SQL Server에는 접속이 잘 되는데 로컬 컴퓨터의 SQLㅤServer에 엔터프라이즈 매니저로 접속할 수 없는 이유는?

 

SQL Server가 NT 네트워킹 코드와 작동하면서 발생하는 문제이다. 가장 간단한 해결 방법은 로컬 서버를 "." 또는 "(local)"이라는 이름으로 등록하는 것이다(따옴표는 무시할 것). 이렇게 이름을 등록하면 SQL Server가 접속 시에 로컬 네임드 파이프를 사용하게 되므로 커넥션 파라미터의 디폴트 값이 어떻게 설정되어 있는 지와는 상관 없이 제대로 동작하게 된다.

 

엔터프라이즈 매니저의 트랜스퍼 툴을 사용하여 작업을 하고 있는데 객체를 옮기지 못할 뿐 아니라 소스에서 삭제해 버린다. 어떻게 된 일인가? : 엔터프라이즈 매니저의 트랜스퍼 툴을 사용하여 작업을 하고 있는데 객체를 옮기지 못할 뿐 아니라 소스에서 삭제해 버린다. 어떻게 된 일인가?

 

접속하고자 하는 서버의 이름에 점(period)이 포함되어 있는 경우 발생하는 버그이다. 일반적으로 서버를 TCP/IP 주소로 참조하기 때문에 발생하는 경우가 많다.

 

SQL Server가 점을 만나면 로컬 네임드 파이프를 이용하여 접속하게 된다. 원래는 점을 단지 포함하고 있을 때 발생해서는 안되고 이름이 오직 점 하나로만 이루어져 있는 경우에만 발생해야 하는 현상이다. 즉, SQL Server가 로컬 컴퓨터를 타켓으로 인식하고 접속하게 되는 것이다. 대부분의 사람들이 "drop objects first" 박스를 체크 하는데 그러면 타겟 컴퓨터라고 생각하고 있는 컴퓨터(실제로는 로컬 컴퓨터)의 모든 객체를 삭제하게 된다.

 

이 문제를 방지하기 위해서는 SQL Server를 IP 어드레스를 이용해서 참조하지 말고 대신 다음과 같이 사용하도록 한다.

 

NT의 HOSTS 파일(\SYSTEM32\DRIVERS\ETC\HOSTS)에 이름/어드레스항목을 추가한다. 또는 타겟 서버에 대한 커넥션에 이름을 주기 위해서 SQL Client Config Manager를 사용한다. Advanced 속성에서 서버의 IP 어드레스와 접속을 위해서 필요한 Net-lib DLL을 입력한다.

이제부터는 transfer to/from 필드에 IP 어드레스 대신 서버의 "이름"을 사용하면 된다.

 

엔터프라이즈 매니저의 Current Activity 화면에서 아무 것도 볼 수 없다. 무엇이 잘못된 것인가? : 엔터프라이즈 매니저의 Current Activity 화면에서 아무 것도 볼 수 없다. 무엇이 잘못된 것인가?

 

일반적으로 tempdb의 "select into/bulkcopy" 데이터베이스 속성이 체크되어 있지 않기 때문에 발생한다. 엔터프라이즈 매니저나 sp_dboption을 사용해서 이 옵션을 다시 ON 시키면 문제가 해결 된다.

 

일반적인 질문

 

SQL Server는 Y2K를 지원하는가? : SQL Server는 Y2K를 지원하는가?

 

“지원(compliant)”이라는 단어의 의미를 어떻게 받아들이냐에 따라서 다르다. 기본적인 기능들이 정상적으로 동작하는 것을 말한다면 답은 “그렇다” 이다. 적절한 datetime 포맷을 사용하는 한 모든 SQLㅤServer 버전은 정상적으로 작동한다. 만약 날짜를 문자열이나 숫자 형태로 저장하였다면 전적으로 프로그램에서 어떻게 처리하느냐에 달려 있으며 SQL Server와는 무관한 문제가 된다.

 

연도의 뒷자리 두개만 지정한 경우에는 50 이하의 값은 20yy로 해석되고 50 이상의 값은 19yy로 받아들인다. 예를 들어 연도로 3을 지정하였다면 2003년으로 인식되고 82를 지정하면 결과는 1982년이 된다. 날짜가 생략된 경우 또는 디폴트 값이 아닌 다른 세기(century)를 사용하기 원할 때에는 반드시 연도의 앞쪽 두 자리도 입력해야 한다.

 

그러나 “지원”이라는 단어가 GUI 툴을 포함하여 SQL Server의 모든 제품 군을 망라한 것이라면 몇 가지 미미한 문제 점들이 발견된 바 있다. http://www.microsoft.com/y2k에 이들 문제가 자세히 정리되어 있으며 아울러 Y2K에 대한 마이크로소프트의 자사 전제품에 관한 입장과 기술 자료가 나와 있다. SQL Server 6.5에서 Y2K와 관련되어 수정된 버그들의 목록을 발췌하여 아래에 실었다.

 

이들 문제는 SQL Server 6.5에서 수정된 후 테스트를 마쳤으며 서비스 팩 5에 포함될 예정이다. 그 전까지는 마이크로소프트의 PSS로부터 Y2K Fix(빌드 339)를 받으면 되지만 서비스 팩5를 기다리는 편이 더 좋을 것이다.

 

SQL Server 7.0은 출시될 때부터 Y2K를 지원하고 있다.

 

SQL Server 1.x, 4.x, 6.0은 Y2K 문제에 대해서 마이크로소프트가 테스트 한 바 없으며 인증되지도 않았다. 다만, 이들 버전이 6.5 버전에서 발견된 것 이상의 다른 문제를 내포하고 있을 가능성은 적기 때문에 참을만 하다면 그냥 사용해도 무방할 것이다.

 

벤더에서 인증하는 것은 Y2K 테스트의 일부분에 지나지 않는다. 가장 중요한 것은 클라이언트, 서버, 응용 프로그램, 데이터베이스, 네트워크 등에 대해서 각 사용자의 환경에서 점검을 하는 것이다.

 

17458 EXPIREDATE와 관련된 Year2000 문제

 

17937 DUMP DATABASE 시에 2000년이 사용되면 EXPIREDATE가 정확하게 설정되지 않음

 

17947 RETAINDAYS : 현재 연도가 2000년 이상인 경우 만기가 지난 덤프 미디어를 덮어 쓸 수 없음

 

17948 Y2000-9 사이에 RETAINDAYS와 함께 DUMP DATABAES를 실행하면 EXPIREDATE가 NULL로 설정됨

 

17997 EXPIREDATE를 2000년 이상으로 설정하여 덤프 된 덤프 디바이스는 init으로 덮어 씌어질 수 있음

 

17661 태스크 매니저 UI: 원 타임 태스크의 날짜/시간 스핀 박스가 2000/02/29를 처리 못함

 

18153 웹 어시스턴트(Web Assistant): 스케줄링 시에 연도를 00으로 쓸 수 없음

 

18170 sp_addtask에서 옳지 않은 Y2K 날짜를 받아 들임

 

18180 sp_purgehistory와 sp_updatealert에서 옳지 않은 Y2K 날짜를 받아 들임

 

SQL Server FAQ 또는 그 밖의 유용한 SQL 정보는 어디서 찾을 수 있는가? : SQL Server FAQ 또는 그 밖의 유용한 SQL 정보는 어디서 찾을 수 있는가?

 

SQL Books Online은 매우 좋은 소스이며 SQL에 관한 수백 개의 기술 문서와 화이트페이퍼가 보관되어 있는 테크넷과 Knowledgebase에도 좋은 자료가 많다.

 

www.swynk.com의 SQL Server 메일링 리스트

 

SQL Server 뉴스그룹: microsoft.com.sqlserver.*과 comp.dcom.database.ms-sqlserver

 

컴퓨서브의 SQL 포럼(GO MSSQL)

 

서적(좋은 책이 많이 있는데 여기에 소개하지 않았다고 해서 좋은 책이 아니라는 뜻은 아니다. 이 책들은 수 차례에 걸쳐 개정판을 내놓았기 때문에 가장 최근의 것임을 확인해야 한다)

 

Microsoft SQL Server 6.5 Programming Unleashed : Sams/various : TSQL 프로그래밍에 좋음

 

Microsoft SQL Server 6.5 Unleashed : Sams/various : DBA/관리/성능/일반적인 내용

 

Inside Microsoft SQL Server 6.5 : MSPress/Ron Soukup : SQL Server가 동작하는 내부 원리 소개. 알려지지 않은 좋은 자료 많음.

 

Microsoft SQL Server 6.5 DBA Survival Guide : SAMS/Spenik and Sledge: DBA들의 공통적인 작업에 대한 핵심 정리

 

SQL Server 6.5 Secrets: IDG/Rensin and Fedorchek : 매우 많은 분량의 유용한 스크립트 모음

 

Special Edition Using Microsoft SQL Server 6.5 : Que/Stephen Wynkoop : 여러 가지 작업을 하는 예제를 단계별로 설명한 뛰어난 참고 서적

 

SQL for Smarties : Morgan-K/Joe Celko : 차원 높은 SQL 프로그래밍 기술, 트릭, 팁. SQL Server만을 위한 것은 아니지만 적극 추천함

 

Hitchhikers Guide to VB and SQL Server : MSPress/Bill Vaughn : VB를 이용하여 SQL Server를 사용할 때 DB-Lib, ODBC, ADO, RDO, OLD-DB, RDS, DMO 등을 어떻게 사용할지 잘 모르는 경우 이 책이 바로 바이블이라고 할 수 있음

 

BackOffice Resource Kit Part II : MSPress : SQL Server의 접속과 관련된 좋은 내용과 심층 자료 및 유용한 유틸리티와 화이트페이퍼

 

SQL Puzzles and Ansers : Morgan-K/Joe Celko : 차원 높은 SQL 프로그래밍 기술, 트릭, 팁. SQL Server만을 위한 것은 아니지만 적극 추천함

 

SQL Server System Administration : New Riders/Baird, Miller, Hotek, et al : 숙련된 관리자를 위한 SQL Server 7.0. 중고급 수준의 주제와 서버의 성능을 최대한 끌어내는 방법을 다룸

 

본 FAQ를 작성하기 위해서 Neil Pike가 혼신의 노력을 기울였다. 그가 작업한 또 다른 내용을 NTFAQ(http://www.ntfaq.com)에서 만나볼 수 있다.

 

SQL Server의 .DAT 디바이스/파일을 압축할 수 있는가? 만약 가능하다면 어떤 문제를 일으키지는 않는가? : SQL Server의 .DAT 디바이스/파일을 압축할 수 있는가? 만약 가능하다면 어떤 문제를 일으키지는 않는가?

 

SQL Server를 정지시키면 가능하다. NT는 파일을 압축하기 위해서는 그 파일에 대한 독점적인 접근 권한을 가지고 있어야 하기 때문이다. 이론상으로는 SQL Server는 파일시스템 레벨에서 어떠한 일이 일어나는지에 대해서는 관여하지 않기 때문에 압축한 후에도 전혀 문제가 없어야 한다.

 

그러나 실제적인 측면에서는 압축으로부터 발생하는 성능 저하 문제로 권하고 싶지는 않다. 특히 내용이 비어있는 데이터베이스/디바이스를 압축한 다음 데이터를 채워나갈 때 성능이 크게 떨어진다. 초기의 비어있는 페이지는 모두 0으로 채워져 있어서 압축률이 매우 높은 상태이므로 데이터가 늘어날수록 NTFS가 파일을 확장하는데 오버헤드가 매우 크게 발생하기 때문이다.

 

SQL Server의 Database Maintenance Wizard를 400MB 이상의 데이터베이스에 대해서 사용할 때 경고를 내보내는 이유는? : SQL Server의 Database Maintenance Wizard를 400MB 이상의 데이터베이스에 대해서 사용할 때 경고를 내보내는 이유는?

 

Database Maintenance Wizard는 dbcc를 비롯해서 데이터베이스의 이상 유무를 체크하는 작업을 많이 설정한다. 데이터베이스의 용량이 큰 경우에는 이와 같은 관리 작업에 많은 시간이 소요되기 때문에 모든 점검 작업을 매일 수행하는 것은 바람직하지 않다. 이런 경우에는 checkdb는 매주 한 번, newalloc는 매일 저녁, 인덱스 재구성은 한 달에 한번 등과 같이 사용자가 직접 관리 작업을 설정하는 것이 좋다.

 

마이크로소프트에서 정한 데이터베이스가 크다는 기준은 400MB이다 - 최근의 CPU와 디스크의 성능에 비해서는 조금 작은 값이라고 할 수 있다. 결론적으로 Database Maintenance Wizard가 생성하는 작업이 수행되는 시간을 기다릴 용의가 있다면 데이터베이스의 크기와는 상관 없이 그대로 사용하면 된다.

 

SQL Server의 .DAT 디바이스/파일에 대해서 단편화 제거 작업(defragmentation)을 수행해도 되는가? : SQL Server의 .DAT 디바이스/파일에 대해서 단편화 제거 작업(defragmentation)을 수행해도 되는가?

 

SQL Server를 정지시키면 가능하다. NT는 파일의 단편화를 제거하기 위해서는 파일에 대한 독점적인 접근 권한을 가지고 있어야 한다. 단편화 제거 프로그램에 버그가 없고 단편화 제거 작업 도중 시스템이 다운 되지만 않는다면 아무 문제도 없다.

 

SQL Server 디바이스는 일단 생성된 후에는 그 크기가 거의 변하지 않기 때문에 효과는 그다지 크지 않다. 따라서 디바이스를 처음 생성할 당시 디스크의 단편화가 심해서 NT가 연속적인 공간을 할당할지 못한 경우가 아니라면 단편화가 발생하지 않을 것이다.

 

새로 포맷된 드라이브에 SQL Server 디바이스를 생성하면 단편화 문제는 전혀 겪지 않게 된다.

 

SQL Server에서 dbcc traceon(208)의 의미는 무엇인가? SQL Server의 에러로그에서 찾았는데 아직 특별히 문제 삼지는 않고 있다. : SQL Server에서 dbcc traceon(208)의 의미는 무엇인가? SQL Server의 에러로그에서 찾았는데 아직 특별히 문제 삼지는 않고 있다.

 

이 트레이스 플래그는 객체의 이름에 따옴표를 붙이는 SQL Server 6.0의 특성에 의존하는 응용 프로그램에서 설정한 것이다. 이 특성이 6.5에 와서 어떻게 변경되었는지는 6.5의 Books Online에서 "What"s New" 항목을 참조하면 된다.

 

ANSI92 SQL 정보는 어디서 구할 수 있는가? : ANSI92 SQL 정보는 어디서 구할 수 있는가?

 

이 정보는 오직 ANSI에서만 구할 수 있는데 필자가 아는 한 인쇄된 문서로만 구할 수 있으며(불법복사를 막기 위해서) 유료로 판매된다

보다 자세한 정보는 ANSI의 웹 사이트인 http://www.ansi.org에서 찾을 수 있다.

 

SQL Server의 스토어드 프로시저와 DDL 등의 소스를 관리하기 위한 패키지는 어떤 것들이 있는가? : SQL Server의 스토어드 프로시저와 DDL 등의 소스를 관리하기 위한 패키지는 어떤 것들이 있는가?

 

마이크로소프트가 SQL Server 7에 리파지토리를 통합시켰기 때문에 비주얼 소스세이프(VSS)의 새 버전에서 이를 위한 몇 가지 함수가 제공될 것으로 보인다. 그러나 VSS가 사용자의 요구 사항을 충족 시킬 수 없는 경우에는 다음 제품들을 사용해 보기 바란다.

 

Cast Workbench - www.castsoftware.com

SQL Programmer - www.sfi-software.com

RapidSQL - www.embarcadero.com

DBArtisan - www.embarcadero.com

 

인스톨, 서비스 팩, 핫픽스, 언인스톨

 

현재 설치되어 있는 서비스 팩의 종류를 확인하려면? : 현재 설치되어 있는 서비스 팩의 종류를 확인하려면?

 

select @@version을 수행하여 다음 목록에서 빌드 넘버를 확인하면 된다. 만약 여기에 나와 있지 않다면 마이크로소프트가 특별히 여러분의 문제를 해결하기 위해서 제공한 핫픽스이다. 핫픽스 버전은 리그레션 테스트(regression test)를 거치지 않았기 때문에 운영 시스템에 적용할 때에는 매우 주의하여야 한다.

 

SQL Server의 SBS/EE 버전에는 6.5 서비스 팩 4를 적용할 수 없음을 유의해야 한다. 서비스 팩 5를 기다리거나 마이크로소프트의 PSS로부터 핫픽스를 받도록 한다. 이 경우를 제외하면 일반적으로 서비스 팩은 Server 모델(워크스테이션, 서버, EE, SBS 등)에 상관없이 적용할 수 있다.

 

7.00.517 SQL Server 7.0 베타 3

7.00.571 SQL Server 7.0 베타 3 특별판

7.00.583 SQL Server 7.0 RC1

 

6.50.201 SQL Server 6.5 "gold" 버전

6.50.213 SQL Server 6.5, 서비스 팩 1

6.50.240 SQL Server 6.5, 서비스 팩 2

6.50.252 SQL Server 6.5, 문제가 있는 서비스 팩 3 – 서비스 팩이 다시 개정되었으므로 이 버전은 사용하지 말 것.

6.50.258 SQL Server 6.5, 서비스 팩 3

6.50.259 SQL Server 6.5, SBS만 있음

6.50.281 SQL Server 6.5, 서비스 팩 4

6.50.297 SQL Serevr 6.5 Site Server 3.0 커머스 에디션(Commerce Edition) 핫픽스

6.50.339 SQL Server 6.5 "Y2K" 핫픽스

6.50.415 SQL Server 6.5, 서비스 팩 5(7.0 버전의 요소에 대한 업그레이드에 중점을 둔 것으로 보임)

6.50.416 SQL Server 6.5, 서비스 팩 5a(EM의 에러를 해결하고 몇 가지 핫픽스 추가)

 

6.00.121 SQL Server 6.0 "gold" 버전

6.00.124 SQL Server 6.0, 서비스 팩 1

6.00.139 SQL Server 6.0, 서비스 팩 2

6.00.151 SQL Server 6.0, 서비스 팩 3

 

SQL Server의 인스톨이 잘 되지 않는다. 어떤 문제가 잘못된 것인가?

 

다음의 체크리스트를 따라서 확인해 보기 바란다. 이와 같이 점검한 후에도 SQL Server를 인스톨하지 못한 경우는 아직까지 한번도 없었다.

 

SQL Server는 레지스트리와 서비스 등을 생성해므로 인스톨하는 컴퓨터에서 관리자 등급의 권한을 가지고 있는지 확인한다.

 

해당 컴퓨터에 SQL Server를 인스톨한 적이 있다면 다음과 같은 파일과 레지스트리 항목을 삭제한다.

 

디렉토리와 하위에 있는 모든 것

패스에서 디렉토리 삭제(제어판->시스템 사용)

 

regedt32/regedit를 사용하여 SQL 레지스트리 삭제

(모든 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer

(6.x 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive

(7.x 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent

(모든 버전)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

 

SQL Server는 셋업 과정에서도 네트워크 기능에 의존한다. 구체적으로 말하면 SQL Server는 네임드 파이프와 메일슬롯 기능을 필요로 한다. 이를 위해서는 일반적으로 네트워크 카드가 설치되어 있어야 한다. 만약 네트워크 카드가 없다면 제어판의 네트워크로 가서 ADD ADAPTER를 선택한 다음 마이크로소프트 루프백 어댑터를 추가한다. 이것은 하드웨어와는 상관 없는 더미 드라이버이며 정상적으로 작동하는 네트워크 프로토콜이 이 어댑터에 연결되어 있어야 한다. TCP/IP를 제외한 모든 프토토콜이 디폴트 파라미터를 사용하도록 하며 만약 TCP/IP를 사용한다면 DHCP는 이용하지 말고 IP 어드레스는 192.168.1.1, 서브넷 마스크는 255.255.255.0로 지정한다. 이것은 RFC1918에 규정되어 있는 라우트 되지 않은 표준 IP 어드레스이므로 ISP로부터 받는 다이얼 업 어드레스와 충돌할 염려가 없다.

 

셋업 루틴에서 사용되는 네임드 파이프는 운영체제 입장에서는 하나의 파일이기 때문에 실시간으로 동작하는 바이러스 검사 프로그램이 문제를 일으킬 수도 있다. 이런 문제는 대부분 해결되었기 때문에 이제는 SQL Server의 네임드 파이프를 방해하지는 않지만 바이러스 검사 프로그램의 버전이 최신의 것임을 확인하는 것이 좋다. 그러나 의심이 간다면 인스톨 과정 동안에는 바이러스를 검사하는 프로그램을 정지시키도록 한다.

 

다른 소프트웨어도 SQL Server의 인스톨을 방해할 수 있다. 일반적으로 네임드 파이프와 메일슬롯을 통한 접속과 관련하여 방해를 하게 되며 셋업은 "unable to write to mailslot"과 같은 에러와 함께 종료하게 된다. 인스톨 중에는 이런 프로그램들을 종료 시키도록 한다. SQL Server의 셋업 루틴을 방해하는 것으로 알려진 패키지의 예는 다음과 같다.

 

IIS - Internet Information Server – 웹 부분. FTP 부분은 아님

PWS - Personal Web Server

Exchange Server

 

만약 전화접속 네트워킹 아이콘과 윈도우가 나타나서 네트워크 접속을 시도한다면 일단 정지시킨 후 제어판의 서비스에서 "Remote Access Autodial Manager" 서비스를 DISABLE 시킨다. 이것은 SQL Server의 문제가 아니라 NT의 문제지만 자동다이얼(Autodial)을 DISABLE 시키는 것이 가장 간단한 해결 방법이다.

 

이제 셋업 루틴을 실행해 보면 제대로 실행될 것이다.

 

 

셋업이 정상적으로 실행되는 것 같으나 SQL Server가 기동 되지 않는다면 다음 사항을 점검한다.

 

\binn 디렉토리에서 아래와 같이 실행한다. 대소문자에 주의하도록 한다.

 

setup /t RegistryRebuild = On

 

이 명령을 실행하면 셋업 루틴이 몇 가지 일반적인 질문을 할 것이다. 인스톨을 다시 하는 것처럼(처음과 동일한 패스 등을 지정) 질문에 답변을 하면 셋업 루틴은 단지 레지스트리 엔트리와 아이콘만을 갱신하며 데이터베이스는 건드리지 않는다.

 

그래도 인스톨이 되지 않으면 \install 디렉토리에서 *.OUT 파일들을 확인하여 어떤 문제가 발생했는지를 점검한다.

 

만약 .OUT 파일에 ISQL이 스크립트를 수행하기 위해서 SQL Server에 접속할 수 없다고 나와 있으면 다음과 같이 해볼 수 있다(공식적으로 지원되는 방법은 아니며 필자도 서비스 팩을 인스톨할 때에만 사용해 보았다. 그러나 전체 인스톨 시에 사용해도 괜찮을 것이다). 아래와 같이 변경한 다음에 "setup /t Local=Yes"를 실행한다.

 

setup.inf 파일을 먼저 백업한 다음 라인을 찾는다.

 

set !ServerName = $(!ComputerName)

 

이제 아래의 세줄을 그 다음에 추가한다.

 

ifstr(i) $(!Local) == "Yes"

set !ServerName = "."

endif

 

일단 인스톨은 되었으나 SQL 엔터프라이즈 매니저에서 SQL Server 이름을 등록하는 것이 잘 되지 않으면 그냥 따옴표 없이 점(".") 하나만으로 등록하면 된다. 이렇게 하면 네트워크 계층을 통하지 않고 로컬 네임드 파이프를 확실하게 사용한다.

 

서비스 팩 4를 인스톨 해야 하는가? 오히려 더 문제를 일으키지는 않을까?

 

모든 서비스 팩에 문제가 없는 것은 아니지만 대부분의 경우 일으키는 문제보다는 해결되는 문제가 훨씬 많다. 여러분이 서비스 팩 4에서 찾을 지도 모르는 버그의 99%는 골드 버전과 그 이후에 나오는 서비스 팩에도 여전히 존재할 것이다. 이들은 모든 버전에 존재하는 수정되지 않았거나 알려지지 않은 버그이다.

 

SQL Server의 서비스 팩이 계속 출시되면서 서비스 팩 4는 매우 안정화 된 버전이 되었다. 서비스 팩 4에서 해결된 버그 리스트를 보려면 다운로드 한 다음 fixlist.txt 파일을 참조하면 된다.

 

서비스 팩 4에는 다른 서비스 팩에서는 발생하지 않는 몇 가지 문제가 알려져 있다.

 

1. 숫자 인덱스 버그가 다시 나타났다. 서비스 팩 4에서

 

WHERE = 1

 

과 같이 사용하면 숫자 에 인덱스가 걸려 있어도 테이블 전체를 검색한다. 그러나

 

WHERE = 1.0

 

과 같이 사용하면 제대로 인덱스를 사용한다.

 

 

2. SQL Server 6.5 서비스 팩3에 들어있는 Instdist.sql 스크립트는 두 번 이상 사용하면 리플리케이션과 문제를 일으킬 수 있다. 이 파일은 서비스 팩4에도 포함되어 있기 때문에 서비스 팩 3에서 서비스 팩 4로 업그레이드 하면게 결과적으로 이 스크립트가 두 번 수행되는 셈이 된다. 이것은 리플리케이션을 사용하는 시스템에만 영향을 준다. 자세한 정보는 Q184882에 나와 있다.

 

SQL Server의 여러 버전 간의 변경 사항과 차이점은 무엇인가?

 

기능 변경 사항은 과거의 버전부터 단계적으로 문서화되어 있다. 다음 자료를 참조하면 된다.

Books Online의 ‘What’s New’ 항목

Q152032 6.0 응용 프로그램에 영향을 끼치는 SQL Server 6.5의 변경 사항

Q133177 4.2x 응용 프로그램에 영향을 끼치는 SQL Server 6.0의 변경 사항

SQL Server 6.5와 7.0의 차이점에 대해서는 Knowledgebase에 관련 문서가 아직 없기 때문에 Books Online을 참조해야 한다.

 

때때로 서비스 팩에서도 기능이 변경되는 수가 있는데 서비스 팩의 readme.txt 파일에 계속 누적되어 기록되어 있다. 따라서 서비스 팩 4의 readme 파일에는 서비스 팩 1,2,3의 변경 내용까지 모두 수록되어 있다.

 

SQL Server를 인스톨 하는 도중 GPF 또는 레지스트리 에러가 발생하는데 어떻게 된 일인가? : SQL Server를 인스톨 하는 도중 GPF 또는 레지스트리 에러가 발생하는데 어떻게 된 일인가?

 

SNMP와 관련된 잘 알려진 문제점으로 보이는데 일부 서버 관리 도구(특히 HP 서버)와 함께 들어오는 SNMP 관리자에서 너무 많은 SNMP extensions을 등록하였기 때문이다.

HKLM\System\CCS\Services\SNMP\Paramaters\ExtensionAgents가 1K 이상 되면 문제가 발생한다.

 

SQL Server를 인스톨 하기 전에 SNMP 서비스를 삭제하거나 다음의 해결 방법을 사용하면 된다.

 

SNMP 서비스를 정지시킨다.

 

위에서 언급한 서브키의 내용을 저장한다(regedt32 사용)

 

가장 큰 이름(이름은 숫자로 구성되어 있음)을 제외한 모든 값들을 삭제한다.

 

SQL Server를 인스톨 한다.

 

‘extensionagents’ 서브키를 확인한다. 셋업 루틴에서 SQL Server를 위한 항목을 추가하였을 것이다. 이름과 값을 나중에 추가하기 위해서 기록해 놓는다.

 

앞의2에서 저장했던 ‘extensionagents’ 값들을 다시 리스토어 한다.

 

sqlserver 항목이 이전 단계에서 사라졌으면 sqlserver 항목을 추가한다.

 

SNMP를 다시 기동한다.

 

SQL Server 데이터베이스의 정렬 순서나 문자열 셋을 변경하는 방법은?

 

기본적으로는 불가능하기 때문에 SQL Server를 인스톨 할 때 정확하게 지정해야 한다. 다음과 같은 순서로 작업을 한다.

 

bcp 또는 transfer manager를 사용해서(dump database 말고) 데이터와 객체를 백업한다.

SQL Server를 원하는 정렬 순서와 문자열 셋으로 다시 인스톨 한다.

데이터와 객체를 부어 넣는다.

 

SQL Server가 사용하는 레지스트리 엔트리는 어떤 것이 있는가?

 

SQL Server는 다음의 레지스트리 키를 사용한다(이것을 모두 지우면 SQL Server 셋업 루틴은 이전 버전을 감지하지 못한다).

 

(모든 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer

(6.x 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive

(7.x 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent

(모든 버전)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

 

120일 평가 판을 정식 버전으로 업그레이드 하려면? : 120일 평가 판을 정식 버전으로 업그레이드 하려면?

 

정식 버전 CD에서 셋업 프로그램을 다시 실행만 하면 되는 것처럼 매우 간단하면 좋겠지만 불행하게도 실상은 그렇지 않다(적어도 6.5 이하의 버전에서는)

 

한 가지 방법은 데이터베이스를 백업하고 평가 판을 언인스톨 한 다음 정식 버전을 인스톨 하고 데이터베이스를 로드 시키는 것이다.

 

보다 빠른 방법은 다음과 같다.

 

 

만약을 위해서 데이터베이스를 백업한다.

 

 

정식 버전의 모든 .DLL과 .EXE 파일을 평가 판이 설치된 곳에 덮어 쓴다.

 

 

<sql>\binn 디렉토리에서 다음의 명령을 대소문자를 정확히 구분하여 실행한다.

setup /t RegistryRebuild = On

셋업 루틴이 실행되면 몇 가지 일반적인 질문을 하게 된다. 평가 판 인스톨 시와 같은 내용으로 답변을 하면(동일한 패스를 지정하는 등) 레지스트리의 엔트리와 아이콘만을 갱신하며 데이터베이스는 건드리지 않을 것이다.

 

SQL Server을 오라클, 익스체인지 등의 프로그램과 같은 컴퓨터에서 사용할 수 있는가? 또한 PDC로 사용할 수도 있는가? : SQL Server을 오라클, 익스체인지 등의 프로그램과 같은 컴퓨터에서 사용할 수 있는가? 또한 PDC로 사용할 수도 있는가?

 

모든 서비스를 실행할 만큼 충분한 리소스가 있고 한 컴퓨터에서 여러 가지 중요한 서비스를 운영하는데 따르는 리스크를 개의치 않는다면 답변은 "그렇다" 이다.

 

SQL Server를 마이크로소프트나 다른 회사의 제품과 함께 사용할 때 문제가 발생하였다는 보고는 아직 없다.

 

도메인 콘트롤러 문제도 마찬가지다 - 만약 도메인이 매우 커서 트러스트가 많고 인증 요청이 쇄도한다면 SQL Server를 함께 사용하는 것은 좋은 생각이 아니다. 마이크로소프트의 기술 자료에는 SQL Server를 도메인 콘트롤러에 설치하지 말라고 되어 있으나 이것은 NT 컴퓨터가 16MB 메모리에 486/33MHz CPU를 사용하던 시절의 이야기이고 현재는 4GB의 메모리에 CPU는 ㅤZeon 4X450MHz 가 장착된 컴퓨터를 구할 수 있다.

 

따라서 한 번 시도해 보고 NT 퍼포먼스 모니터로 리소스를 관찰하면서 cpu usage와 wait, disk usage와 wait, network usage와 wait를 점검한다. 체크해야 할 가장 중요한 것은 memory pages/sec 인데 메모리가 부족하여 디스크에 물리적인 페이징이 발생하는 지를 확인할 수 있다. SQL Server가 사용하는 메모리를 줄여서 다른 프로세스가 충분한 메모리를 할당 받아 페이징이 발생하지 않도록 해야 한다(SQL 6.5 이하의 버전의 경우에 해당, 7.0에서는 자동으로 설정됨)

 

SQL Server의 핫픽스는 어디서 구할 수 있는가? : SQL Server의 핫픽스는 어디서 구할 수 있는가?

 

공식적인 답변을 하자면 마이크로소프트 제품 지원 서비스에 전화 연락을 해야만 한다. 전화 지원에 드는 비용은 여러분의 계정이나 신용카드에 자동으로 부과된다. 하지만 통화한 엔지니어가 문의 내용이 마이크로소프트의 버그와 연관된 것이라고 판단하면 다시 환불해 준다. 그들은 핫픽스를 어디서 받을 수 있는지를 알려주거나 아니면 직접 보내줄 것이다.

 

비공식적으로는, 정확한 빌드 넘버와 pkzip 패스워드를 알고 있다면 ftp.microsoft.com/bussys/sql/transfer에서 다운로드 받을 수 있다. 파일들은 SQLbbbm.EXE 와 같은 형태로 되어 있는데 여기서 bbb는 빌드 넘버이고 m은 컴퓨터 타입이다. 예를 들어 SQL324I.EXE는 인텔 칩의 빌드 324를 의미한다. 파일들은 pkzip 암호가 걸려 있다.

 

핫픽스를 어디서 받던 간에 핫픽스는 리그레션 테스트가 되어 있지 않기 때문에 문제를 수정하는 것보다 오히려 더 큰 문제를 일으킬 수 있음을 유의해야 한다. 따라서 핫픽스를 사용하기 전에 마이크로소프트의 PSS와 반드시 상의할 필요가 있다.

 

SQL Server를 사용할 수 있는 하드웨어/소프트웨어는? : SQL Server를 사용할 수 있는 하드웨어/소프트웨어는?

 

SQL Server에서 "server"가 의미하는 바에 따라서 다르다. 즉, server가 단지 데이터베이스 자체를 뜻하거나 SQL Server 클라이언트 툴을 의미하는 것이거나 등.. 단지 SQL Server에 접속하기 위한 것이라면 DB-Lib나 ODBC 드라이버를 사용할 수 있는 환경이면 충분하다.

 

하드웨어가 언급되어 있지 않은 경우에는 해당 운영 체제를 실행할 수 있는 하드웨어라면 SQL Server도 사용할 수 있다.

 

SQL 1.1 Server OS/2 1.30

SQL 1.1 Client Tools Dos, OS2, Win3x, Win9x, WinNT

SQL 4.2 Server OS/2 1.30, WinNT 3.1/3.5/3.51

SQL 4.2 Client Tools Dos/OS2/Win3x/Win9x/WinNT 3.1/3.5/3.51

SQL 6.0 Server WinNT 3.51

SQL 6.0 Client Tools Win9x/WinNT 3.51

SQL 6.5 Server WinNT 3.51/4.0

SQL 6.5 Client Tools Win9x/WinNT 3.51/4.0

SQL 7.0 Server WinNT 4.0 SP3, 100% 인텔 펜티엄133Mhz 이상 (1)(2)

SQL 7.0 Client Tools Win9x/WinNT 4.0 SP3, 100% 인텔 펜티엄 이상(1)

 

(1) SQL Server 7.0은 486 컴퓨터나 AMD/싸이릭스/IBM 프로세서를 사용한 경우에는 사용할 수 없음을 뜻한다.

(2) SQL Server 7.0은 133MHz 이하의 펜티엄 CPU에서도 실행되긴 하지만 마이크로소프트는 공식적으로는 이것을 지원하지 않는다. 그러나 성능상의 문제가 아니라면 문의 전화를 받아서 지원하는 것을 거부하지는 않을 것이다.

 

SQL Server를 완전하게 삭제하려면? : SQL Server를 완전하게 삭제하려면?

 

만약 표준 언인스톨러가 제대로 작업을 하지 못했다면 다음과 같이 하면 된다.

 

<sql> 디렉토리와 하위에 있는 모든 것 삭제

패스에서 <sql> 디렉토리 삭제(제어판->시스템 사용)

regedt32/regedit를 사용하여 SQL 레지스트리 삭제

(모든 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer

(6.x 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive

(7.x 버전)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent

(모든 버전)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

 

README에 나온 내용과는 달리 SQL Server의 서비스 팩 4를 Win95에 인스톨 할 수 없는 이유는? : README에 나온 내용과는 달리 SQL Server의 서비스 팩 4를 Win95에 인스톨 할 수 없는 이유는?

 

마이크로소프트가 서비스 팩 4를 출시 하였을 때 setup.inf 파일에 문제가 있어서 Win95 클라이언트에 인스톨이 안되기 때문이다. 이 문제를 수정한 서비스 팩이 다시 출시되었는데 원래의 서비스 팩이 있던 모든 웹 사이트에 다 반영된 것 같지는 않다.

 

ftp://ftp.microsoft.com/bussys/sql에서 서비스 팩 4를 받으면 잘 작동할 것이다.

 

Unattended mode에서 SQL Server 클라이언트 툴을 인스톨 하려면 어떻게 해야 하는가? : Unattended mode에서 SQL Server 클라이언트 툴을 인스톨 하려면 어떻게 해야 하는가?

 

마이크로소프트가 제공한 6.5 버전 이하의 setup.inf 파일에서는 허용되지 않는다(7.0 버전은 아직 확인 못함). 따라서 다음의 방법 가운데 하나를 선택하도록 한다.

 

setup.inf 파일을 수정하여 이를 지원하도록 변경하거나 아니면 새롭게 작성한다.

 

관련된 파일들을 복사하고 필요한 레지스트리 파라미터를 갱신하는 스크립트를 작성한다. sysdiff와 같은 것을 사용하면 된다.

 

새로운 버전의 NT를 인스톨 하였을 때 데이터를 잃어버리지 않고 SQL Server를 다시 인스톨 할 수 있는 방법은? : 새로운 버전의 NT를 인스톨 하였을 때 데이터를 잃어버리지 않고 SQL Server를 다시 인스톨 할 수 있는 방법은?

 

6.5 이하의 버전에서는 <sql>\binn 디렉토리에서 대소문자에 주의하면서 다음의 명령을 실행한다.

setup /t RegistryRebuild = On

이 명령을 실행하면 셋업 루틴이 몇 가지 일반적인 질문을 할 것이다. 인스톨을 다시 하는 것처럼(처음과 동일한 패스 등을 지정) 질문에 답변을 하면 셋업 루틴은 단지 레지스트리 엔트리와 아이콘만을 갱신 하며 데이터베이스는 건드리지 않는다.

 

SQL Server 7.0에서는 regrebld.exe 명령을 사용한다 - regrebld.exe /? 을 실행하면 매뉴얼에 나와 있는 옵션을 볼 수 있다.

 

SQL Server에는 워크스테이션/개발자용/개인용 버전이 있는가? : SQL Server에는 워크스테이션/개발자용/개인용 버전이 있는가?

 

4.2와 6.0버전에서는 마이크로소프트는 SQL Server와 SQL Workstation을 공급하였다. SQL Server는 완전한 버전으로 NT Server 상에서만 동작하며 SQL Workstation은 개발자를 위한 것으로 NT Server나 NT Workstation 모두에서 실행되지만 제한된 개수(15)의 접속만을 허용한다. SQL Workstation에는 다양한 개발 도구가 포함되어 있다.

 

6.5버전에서는 SQL Server도 NT Server 뿐 아니라 NT Workstation 4.0에서 사용할 수 있게 되었다. 공식적으로 인증되지는 않았지만 6.0 버전도 NT Workstation에서 수행이 가능하긴 하다.

 

SQL Server를 사용하기 위해서 NT 클라이언트 라이센스가 필요한가? : SQL Server를 사용하기 위해서 NT 클라이언트 라이센스가 필요한가?

 

필요 없다. 그 대신 마이크로소프트 NT Server와 SQL Server에 대한 라이센스가 필요하며 사용자들을 위해서 SQL Server 클라이언트 라이센스도 필요하다. 만약 사용자들이 NT Server에 접속해서 파일 또는 프린트 서비스를 사용한다면(파일을 서버에 저장하고 서버를 통해서 프린터에 출력하는 것) NT Server 클라이언트 라이센스도 필요하다.

[Top]
No.
제목
작성자
작성일
조회
506동적 쿼리의 해결사 sp_executesql vs. exec
정재익
2002-08-29
20460
504DB 파일을 D드라이브로 옮기는 방법
정재익
2002-08-29
13369
453SQL Server FAQ (4)
정재익
2002-07-17
55321
452SQL Server FAQ (3)
정재익
2002-07-16
20689
448SQL Server FAQ (2)
정재익
2002-07-14
28818
447SQL Server FAQ (1)
정재익
2002-07-14
31056
445Oracle DB 를 SQL Server 2000 으로 migration
정재익
2002-07-12
10188
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다