[SQL2005] "설치 마법사 실행 중에 오류가 발생했습니다" 오류로 설치 실패 01.SQL Server 설치 이슈

Problem Description :
SQL Server 2005 설치시 다음의 오류가 발생하며 실패함.

설치 마법사 실행 중에 오류가 발생했습니다. 자세한 내용은 설치 로그를 검토하거나 [도움말] 단추를 클릭하십시오.

Troubleshooting :
summary.txt 파일에서 각 component들에 대해 successful로 정상 설치된 것으로 나타나나 마지막에 실패로 나타남

~
--------------------------------------------------------------------------------
Machine         : servername
Product         : Microsoft SQL Server 2005 Integration Services
Product Version : 9.00.1399.06
Install         : Successful
Log File        : C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files\SQLSetup0001_DRGENDB1_DTS.log
--------------------------------------------------------------------------------
Machine         : servername
Product         : Microsoft SQL Server 2005
Product Version : 9.00.1399.06
Install         : Successful
Log File        : C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Files\SQLSetup0001_DRGENDB1_SQL.log
--------------------------------------------------------------------------------
DRGENDB1 : 설치 마법사 실행 중에 오류가 발생했습니다. 자세한 내용은 설치 로그를 검토하거나 [도움말] 단추를 클릭하십시오.


 SQL Server를 설치하지 못했습니다. 자세한 내용은 %ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\LOG\Summary.txt에서 설치 로그 파일을 검토하십시오.


SETUP 로그 중 SQLSetup0001_<servername>_Core(Local) 파일에 다음의 오류 메시지 확인함.

Running: InstallToolsAction.10 at: 2009/9/29 14:55:46
Error: Action "InstallToolsAction.10" threw an exception during execution.  Error information reported during run:
Target collection includes the local machine.
Fatal Exception caught while installing package: "10"
        Error Code: 0x80070002 (2)
Windows Error Text: 지정된 파일을 찾을 수 없습니다.

  Source File Name: sqlchaining\sqlprereqpackagemutator.cpp
Compiler Timestamp: Tue Aug  9 01:14:20 2005
     Function Name: sqls::SqlPreReqPackageMutator::modifyRequest
Source Line Number: 196

---- Context -----------------------------------------------
sqls::InstallPackageAction::perform

WinException caught while installing package. : 1603
        Error Code: 0x80070643 (1603)
Windows Error Text: 설치를 하는 동안 치명적인 오류가 발생했습니다.

  Source File Name: packageengine\installpackageaction.cpp
Compiler Timestamp: Fri Jul  1 01:28:25 2005
     Function Name: sqls::InstallPackageAction::perform
Source Line Number: 167

---- Context -----------------------------------------------

위 로그에서 InstallToolsAction.10 패키지는 [SQL Server 2005 Tools] 에 대한 패키지로 위 로그에서
설치 파일을 찾지 못해 오류가 발생한 것으로 나타남

Cause :
위 설치 이슈는 SQL Server 2005 SETUP 파일 (2장의 CD)을 디스크에 복사한 후 설치할 때 CD1, CD2의
파일을 각각 다음의 경로에 복사하지 않은 경우 발생함

Servers
Tools


Resolution :
SQL Server 2005 SETUP CD1,2 파일을 동일 디렉토리내 Servers, Tools 폴더에 복사한 후 SETUP 진행






[SQL2008] Win2008 R2 서버에 SQL Server 2008 Cluster SETUP 실패 01.SQL Server 설치 이슈

Problem Description :
Windows Server 2008 R2 서버에서 SQL Server 2008 Cluster 설치 도중 다음의 팝업창이 뜨며 실패함.

제목: Microsoft SQL Server 2008 설치

------------------------------

 

다음 오류가 발생했습니다.

 

리소스 'SQL Network Name (VSQL)'에 대한 개인 속성 'RequireKerberos'() '1'()로 설정하는 동안 오류가 발생했습니다. 오류: 값이 예상 범위를 벗어났습니다.


Cause :
Windows Server 2008 R2 서버에서 SQL Server 2008 RTM 버전의 Cluster SETUP이 지원되지 않음.


Resolution :
Windows Server 2008 R2 서버에 SQL Server 2008 Cluster를 설치하려면 SQL Server 2008 서비스팩1의 SETUP을
사용해야 합니다. 이를 위해 SQL Server 2008 + 서비스팩1 통합 설치 파일 (slipstream media)을 이용해야 합니다.

<SQL Server 2008 + 서비스팩1 통합 미디어 생성 방법>

1) 원본 SQL Server 2008 DVD 파일을 C:\SQLServer2008_FullSP1 경로에 모두 복사
2) 아래 경로에서 SQL Server 2008 서비스팩1 파일을 다운로드 (3개의 파일 모두)

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19

- SQLServer2008SP1-KB968369-IA64-KOR.exe
- SQLServer2008SP1-KB968369-x64-KOR.exe
- SQLServer2008SP1-KB968369-x86-KOR.exe


3) 위 서비스팩1 파일에 대해 다음의 명령을 수행해 압축 해제함

> SQLServer2008SP1-KB968369-IA64-KOR.exe /x:c:\SQLServer2008_FullSP1\PCU
> SQLServer2008SP1-KB968369-x64-KOR.exe /x:c:\SQLServer2008_FullSP1\PCU
> SQLServer2008SP1-KB968369-x86-KOR.exe /x:c:\SQLServer2008_FullSP1\PCU


4) 압축 해제된 SETUP 파일로 원본 SETUP 파일을 대체

> robocopy C:\SQLServer2008_FullSP1\PCU c:\SQLServer2008_FullSP1 Setup.exe
> robocopy C:\SQLServer2008_FullSP1\PCU c:\SQLServer2008_FullSP1 Setup.rll

5) Microsoft.SQL.Chainer.PackageData.dll 파일을 제외한 나머지 파일들 대체

> robocopy C:\SQLServer2008_FullSP1\pcu\x86 C:\SQLServer2008_FullSP1\x86 /XF Microsoft.SQL.Chainer.PackageData.dll
> robocopy C:\SQLServer2008_FullSP1\pcu\x64 C:\SQLServer2008_FullSP1\x64 /XF Microsoft.SQL.Chainer.PackageData.dll
> robocopy C:\SQLServer2008_FullSP1\pcu\ia64 C:\SQLServer2008_FullSP1\ia64 /XF Microsoft.SQL.Chainer.PackageData.dll

6) 아래 폴더의 Defaultsetup.ini 파일 수정 (PCUSOURCE=".\PCU" 추가)

C:\SQLServer2008_FullSP1\x86
C:\SQLServer2008_FullSP1\x64
C:\SQLServer2008_FullSP1\ia64


====================================================================================================================

;SQLSERVER2008 Configuration File

[SQLSERVER2008]

...

PCUSOURCE=".\PCU"

====================================================================================================================

7) SETUP 수행





[SQL2008] "MOF 컴파일러가 WMI 서버에 연결.." 오류로 설치 실패 01.SQL Server 설치 이슈

Problem Description :

SQL Server 2005 또는 2008 를 설치할 때 “MOF 컴파일러가 WMI 서버에 연결할 수 없습니다.” 오류가 발생하며 실패

-- C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\Summary.txt 로그
Detailed results:
  Feature:                       데이터베이스 엔진 서비스
  Status:                        실패: 자세한 내용은 로그를 참조하십시오.
  MSI status:                    성공
  Configuration status:          실패: 아래 세부 정보를 참조하십시오.
  Configuration error code:      0xD3BEBD98@1211@1
  Configuration error description: MOF 컴파일러가 WMI 서버에 연결할 수 없습니다. 기존 WMI 리포지토리와의 비호환과 같은 의미 체계 오류이거나 WMI 서버 시작 실패와 같은 실제 오류 때문일 수 있습니다.
  Configuration log:             C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Log\20091006_101134\Detail.txt

Cause :

일반적으로 위의 SETUP 이슈는 이전에 SQL Server 2005/2008 설치 후 이를 다시 Uninstall했을 때 완전하게 삭제되지 않은 경우 발생하는 경우가 많습니다. 해당 머신에 SQL Server 2005/2008을 처음으로 설치함에도 위 오류가 발생한다면 해당 서버의 WMI Repository가 깨진 경우로 이를 다시 REBUILD해 줄 필요가 있습니다.

Resolution :

1. [제어판] > [프로그램 추가/제거] 에서 SQL Server 2005/2008 관련 Component들이 남아 있다면 모두 제거함
즉, 모든 Microsoft SQL Server 2005/2008 * 을 제거해 줍니다. 특히, 이전 설치 때 남은 [Microsoft SQL Server 2005/2008 설치 지원 파일이 남아 있는 경우 설치 단계 중 [설치 지원 파일] 단계에서 화면이 사라지는 증상이 발생할 수 있으니 이를 모두 제거해 줘야 합니다.


2. 다음의 레지스트리 키에서 SQL Server 관련 Component들이 남아 있는지 확인

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

가령, 위 그림에서와 같이 Uninstall 밑 SQL Server 관련 GUID가 남아 있는지 확인합니다. 위 항목이 남아 있는 경우 해당 Component들이 제대로 Uninstall되지 않았음을 의미합니다. 이 경우 해당 GUID에 대해 Command창에서 다음의 명령을 수행해 uninstall해 줍니다.

start /wait msiexec /x {0B43A744-B1B8-4089-9BD1-9D41C7EC0AA3} /l*v c:\sql_uninstall.log


3. 시스템 Rebooting 후 SQL Server 2005/2008 설치


[SQL200x] 트랜잭션 로그 파일(LDF)가 무한정 커지는 증상 03.데이터베이스 복구

Problem Description :


데이터베이스 파일 (MDF, NDF)가 크지 않음에도 불구하고 트랜잭션 로그 파일(LDF) 파일 크기가 수십GB까지 커져 DISK FULL이 나는 경우가 종종 있습니다. SQL Server에서 트랜잭션 로그는 다음의 세가지 경우에 대해서 비워집니다.

1) Transaction Log Backup 수행할 경우 (복구 모델이 최대/대량로그인 경우)
정기적으로 데이터베이스 전체 백업을 받으면서 트랜잭션 로그 백업에 대해서는 스케줄을 잡지 않는 경우가 많은데 트랜잭션 로그는 전체 백업을 받더라도 비워지지 않습니다. 이는 트랜잭션 로그 백업을 수행해야 비로서 비워집니다.

2) 데이터베이스 복구 모델이 [단순]인 경우
복구 모델이 [단순](simple)일 경우 SQL Server 내부적으로 checkpoint(Memory상의 변경된 데이터를 DISK에 반영)가 일어날 때마다 트랜잭션 로그가 비워집니다. 따라서, [단순] 모드의 데이터베이스에 대해 트랜잭션 로그 백업을 수행할 수 없습니다.

3) 사용자가 명시적으로 Log를 비워줄 경우
[단순] 모드가 아닌 데이터베이스에 대해 트랜잭션 로그 백업을 받을 필요가 없을 경우 명시적으로 트랜잭션 로그를 비워주셔야 합니다.
BACKUP LOG <dbname> WITH TRUNCATE_ONLY
그런데, 간혹 트랜잭션 로그 백업을 수행했음에도 불구하고 로그가 비워지지 않고 LDF 파일이 계속 커지는 경우가 있습니다.

General Troubleshooting :

1. commit/rollback 되지 않은 트랜잭션이 존재하는지 ?

한 트랜잭션 내에서 대량의 INSERT/UPDATE/DELETE가 수행되거나 또는 사용자가 명시적으로 BEGIN TRAN으로 트랜잭션을 OPEN한 이후 COMMIT/ROLLBACK 명령을 수행하지 않을 경우 Active Transaction이 남아 트랜잭션 로그 백업을 받더라도 Log가 Truncate되지 않는 경우가 있습니다.
현재 트랜잭션 로그의 사용 공간을 확인하고자 한다면 아래 명령을 수행하면 됩니다.

DBCC SQLPERF(LOGSPACE)

Database Name      Log Size (MB)     Log Space Used (%)     Status
-------------    -------------    ------------------    ------
~
test1        8330.555    99.52912        0
~

(가령, 위 결과를 보면 test1 데이터베이스의 LDF 파일 크기가 8.3 GB정도이며 99%가 사용중임을 의미합니다.)

트랜잭션 로그가 Truncate되지 않는 데이터베이스에 대해 현재 완료(COMMIT/ROLLBACK)되지 않은 Active Transaction이 존재하는지 확인하려면 다음의 쿼리문을 수행합니다.

DBCC OPENTRAN (<dbname>)

데이터베이스 'test'의 트랜잭션 정보입니다.

가장 오래 전에 활성화된 트랜잭션:
    SPID(서버 프로세스 ID): 70
    UID(사용자 ID) : -1
    이름          : user_transaction
    LSN           : (22:251:1)
    시작 시간    : 09 24 2009  6:29:47:953PM
    SID           : 0x0105000000000005150000005d28f57fd53ad8354354e02ad2d70100

위 결과에서 ‘test’ 데이터베이스에서 가장 오래된 활성 트랜잭션의 시작 시간을 확인할 수 있습니다.

2. 배포되지 않은 복제 트랜잭션이 존재하는지 ?

특정 데이터베이스가 Transactional Replication의 게시자로 사용되는 경우 복제되는 테이블에 변경이 발생하면 이를 배포자로 전달하게 됩니다. 만일, 어떤 이유로 배포자로 전달되지 않을 경우 이는 배포되기전까지 Truncate되지 않게 됩니다. 기존 복제에 사용되었다가 현재는 복제로 사용되지 않더라도 간혹 데이터베이스에 복제 설정이 그대로 남아 있는 경우가 있습니다. DBCC OPENTRAN 명령 수행시 아래와 같이 비배포 LSN이 남게 됩니다.

'Test' 데이터베이스의 트랜잭션 정보입니다.
복제 트랜잭션 정보:
        가장 오래된 배포 LSN     : (0:0:0)
        가장 오래된 비배포 LSN : (7:176:1)

이때, backup log Test with truncate_only 명령으로 트랜잭션 로그를 강제로 Truncate시킬 경우 다음의 오류가 발생하며 실패할 것입니다.

로그 시작 부분의 레코드가 복제 보류 중이므로 로그가 잘리지 않았습니다. 로그 판독기 에이전트가 실행 중인지 확인하거나 sp_repldone을 사용하여 트랜잭션이 분산된 것으로 표시하십시오.

실제 해당 데이터베이스가 복제의 게시자로 사용중이라면 [로그 판독기 에이전트]가 실패하고 있는지 확인해 이를 먼저 해결해야 합니다. 만일, 현재 복제에 사용되지 않으나 기존 설정이 남아 있는 경우라면 해당 데이터베이스에서 다음의 명령을 수행해 모든 트랜잭션을 배포 처리해줍니다.

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0,    @time = 0, @reset = 1
go

continue…


[SQL2005] SQL login 계정으로 연결 실패 02.서비스 실패 및 연결이슈

Problem Description :
Windows 인증으로는 정상적으로 접속이 되나 일부 SQL Login계정(가령, sa)로의 접속이 실패함.
SQL Server로의 접속 실패 시점에 다음의 오류가 ERRORLOG에 남음.

2008-11-19 10:40:26.58 로그온         오류: 18456, 심각도: 14, 상태: 10.

2008-11-19 10:40:26.58 로그온         Login failed for user 'xxx'. [클라이언트: xxx.xxx.xxx.xxx]


이때, Management Studio에서 해당 로그인에 대한 속성창 click시 다음의 오류가 발생.

로그인 '<loginname>'에 속성 IsLocked() 사용할 수 없습니다. 이 속성이 이 개체에 대해
존재하지 않거나 액세스 권한이
부족하여 검색하지 못할 수 있습니다.


Cause :
[암호 정책 강제화 적용]이 체크된 로그인들에 대해 Windows의 password/expire policycheck가
실패할 경우 해당 로그인으로 접속이 실패함.


Resolution :
다음의 쿼리를 수행해 [암호 정책 강제화 적용]이 체크된 로그인 확인.
(Management Studio에서 접속이 안되는 계정들)

select * from sys.sql_logins where is_policy_checked = 1


로그인 실패하는 계정들에 대해 다음의 명령을 수행해 [암호 정책 강제화 적용]을 해제함.

ALTER LOGIN <loginname> WITH CHECK_POLICY = OFF



1 2 3