달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

보고 서버의 ReportServer\bin\ReportingServicesService.exe.config 파일에 다음 항목 추가

<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportingServices.ProcessingCore" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="9.0.242.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.ReportingServices.ProcessingCore" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="9.0.242.0" newVersion="10.0.0.0" />
</dependentAssembly>

http://support.microsoft.com/kb/972821/en-us

:
Posted by 커널64
2009. 9. 21. 12:43

Kerberos와 NTLM 인증에 대한 정리 Active Directory2009. 9. 21. 12:43

I. Kerberos vs. NTLM
NTLM 인증: Challenge-Response mechanism
1. 클라이언트가 서버로 사용자 이름을 보낸다.
2. 서버는 이에 대한 요청 값을 생성해 클라이언트로 보낸다.
3. 클라이언트는 이 요청 값을 사용자 암호로 암호화해 서버로 응답을 보낸다.
4. 로컬 계정인 경우 서버는 SAM(Security Account Manager)을 검색해 사용자의 응답을 검증한다.
5. 도메인 계정인 경우 서버는 이 응답을 도메인 컨트롤러로 전달해 검증하고 사용자 계정에 대한 그룹 정책을 받는다.
6. Access Token을 발급하고 세션을 맺는다.

Kerberos 인증: Trust-Third-Party Scheme
- Kerberos 인증 방법은 표준 프로토콜로 네트워크에서 클라이언트와 서버를 상호 인증하는 방식이다.
- 세 가지 주 요소는 KDC(Key Distribution Center), 클라이언트, 접근할 서비스를 가지는 서버
- KDC는 도메인 컨트롤러의 일부로서 설치되며 다음 두 가지 기능을 수행한다.
-- AS(Authentication Service), TGS(Ticket-Granting Service)

1. 사용자가 네트워크에 로그온하면 AS에 TGT(Ticket Grant Ticket)을 요청한다.
2. 클라이언트는 네트워크 자원에 접근할 때 TGT와 인증자(Authenticator), 대상 서버의 SPN(Service Principal Name)을 제시한다.
3. 클라이언트는 네트워크 서비스와의 통신에 사용될 세션 티켓을 받기위해 서비스 계정 도메인의 TGS에 접속한다.
4. 대상 서버가 인증자를 검증하고 나면 클라이언트 사용자에 대한 Access Token을 생성한다.


II. Kerberos와 NTLM 인증의 요구 사항
Kerberos
1. 클라이언트와 서버는 반드시 도메인 구성원이어야 한다. 만약 클라이언트와 서버가 서로 다른 도메인에 속하는 경우 두 도메인은 양방향 신뢰가 구성되어 있어야 한다.
2. SPN 등록. SPN은 서버에서 실행 중인 서비스에 대한 고유한 식별자다. Kerberos 인증을 필요로 하는 서비스는 SPN을 가지고 있어야 클라이언트가 네트워크에서 서비스를 식별할 수 있게 된다.

SPN(Service Principal Name)
SQL Server에 대한 SPN은 다음과 같은 요소로 구성된다.
- ServiceClass: 서비스를 식별하는 요소. SQL Server에 대한 Service Class는 MSSQLSvc이다.
- Host: SQL Server가 실행 중인 컴퓨터의 FQDN
- Port: 실행 중인 서비스가 수신 대기 중인 포트
예) MSSQLSvc/sqlserver.domain.com:1433

NTLM
NTLM은 요청-응답의 과정을 위해 사용자 암호를 요구한다. 이후 서버는 클라이언트로부터 암호를 요구하지 않고 클라이언트를 식별할 수 있게 된다. 만약 클라이언트가 시스템 계정으로 실행 중이라면 인증 정보를 보낼 수가 없기 때문에 인증은 실패하게 된다.

NTLM Fallback
NTLM(NT LAN Manager)는 Windows NT와 Windows 2000 Workgroup 환경에서 사용되던 인증 프로토콜이다.
Windows Server 2003, Windows XP, Windows 2000은 어느 인증 프로토콜을 사용할지 협상하는 알고리즘을 사용한다. Kerberos 프로토콜이 기본 값이며 Kerberos 인증이 실패할 경우 NTLM 인증을 시도한다.


III. SQL Server 2005에 접속 시 Kerberos와 NTLM
1. 만약 SPN이 존재하면 TCP/IP를 통한 원격 접속 시 Kerberos가 사용된다.
2. SPN이 존재하고 XP 컴퓨터의 로컬 TCP 연결을 하는 경우 Kerberos가 사용된다.
3. Windows Server 2003의 로컬 연결의 경우 NTLM이 사용된다.
4. 명명된 파이프 연결의 경우 NTLM이 사용된다.
5. SPN을 찾을 수 없고 TCP를 통해 연결하는 경우 NTLM이 사용된다.

SETSPN.EXE
1. SQL Server가 LocalSystem 또는 NetworkService 계정으로 실행 중인 경우 SPN 확인
SETSPN -L <SQL Server가 설치된 서버 이름>
2. SQL Server가 도메인 사용자 계정으로 실행 중인 경우 SPN 확인
SETSPN -L <도메인>\<사용자 계정>
3. 만약 도메인 계정이 관리자 계정이 아닌 상황에서 Kerberos 인증을 반드시 사용해야 하는 경우 SPN 등록
SETSPN -A <도메인>\<사용자 계정>
4. SQL Server는 다음 항목이 만족되는 경우 서비스 시작 시 자동으로 SPN을 등록한다. 아래 항목이 충족되지 않는 경우 Kerberos인증을 위해서는 SPN을 수동으로 등록해야만 한다.
- SQL Server가 LocalSystem 또는 Network Service 또는 도메인 관리자 계정으로 실행 중이다.
- TCP/IP 프로토콜이 활성화되어 있다.

일반적으로 클라이언트가 SQL Server로 TCP 연결을 맺는 경우 클라이언트의 SQL 드라이버는 SQL Server가 실행 중인 서버의 FQDN을 풀게된다. 그 다음 SQL Server의 SPN을 검색하고 협상 과정을 거쳐 KDC의 SPN 검증 여부에 따라 NTLM 또는 Kerberos를 사용해 인증을 시도한다. 만약 Kerberos 인증이 실패할 경우 NTLM 인증을 시도한다. 명명된 파이프로 접속하는 경우에는 SQL 드라이버는 빈 SPN을 생성해 NTLM 인증으로 인증을 시도한다.

:
Posted by 커널64

select DB_NAME(a.database_id) as DBName,
a.File_ID,
b.name,
a.IO_Stall,
a.Num_Of_Reads, a.Num_Of_Writes,
a.Num_Of_Bytes_Read, a.Num_Of_Bytes_Written
from sys.dm_io_virtual_file_stats(null, null) a
inner join sys.master_files b on a.database_id = b.database_id and a.file_id = b.file_id

결과에서 io_stall 값이 매우 높다면 I/O로 인한 성능 문제가 있을 수 있음

열 이름  데이터 형식  설명 
database_id smallint 데이터베이스 ID
file_id smallint 파일 ID
sample_ms int SQL Server 인스턴스를 시작한 이후 경과한 시간(밀리초)
num_of_reads bigint 파일에 대해 읽기가 실행된 횟수
num_of_bytes_read bigint 파일에 대해 실행된 읽기의 총 바이트 수
io_stall_read_ms bigint 사용자가 파일에 대한 읽기가 실행될 때까지 대기한 총 시간(밀리초)
num_of_writes bigint 파일에 대해 쓰기가 실행된 횟수
num_of_bytes_written bigint 파일에 대해 실행된 쓰기의 총 바이트 수
io_stall_write_ms bigint 사용자가 파일에 대한 쓰기가 완료될 때까지 대기한 총 시간(밀리초)
io_stall bigint 사용자가 파일에 대한 I/O가 완료될 때까지 대기한 총 시간(밀리초)
size_on_disk_bytes bigint 이 파일에 대해 디스크에서 사용된 바이트 수
file_handle varbinary 이 파일에 대한 Windows 파일 핸들

:
Posted by 커널64

1. MPSReport - 구성 정보 수집
 
2. PSSDiag / SQLDiag
1) PSSDiag - SQL 2000에서 사용, 별도로 설치
PSSDIAG Data Collection Utility
2) SQLDiag - SQL 2005에서 사용, SQL 2005와 함께 설치됨 (Binn 폴더에 위치)
3) 수집하는 정보
- Windows Performance Logs
- Windows Event Logs
- SQL Server Profiler Traces
- SQL Server Blocking Information
- SQL Server Configuration Information
 SQLDIAG.XML 파일 수정을 통해 수집할 정보 수정

3. ReadTrace
RML Utilities for SQL Server (x86)
RML Utilities for SQL Server (x64)

수집된 Profiler Trace 분석 Tool (*실제 서비스 환경에 실행 금지* )
- Rollup by Duration
- Rollup bu CPU
- Rollup by Read/Write

:
Posted by 커널64
2008. 11. 16. 17:21

SQL Server 버전 및 서비스팩 확인 Database2008. 11. 16. 17:21

SQL Server 버전, 서비스팩 및 업데이트 빌드 번호 확인
SQL 서버 Version Build Number 에디션 Service Pack SP 서비스팩

확인 쿼리
Select @@version

SQL Server 2008 R2
RTM 10.50.1600.1
서비스 팩 1 10.50.2500.0

SQL Server 2008
RTM 10.00.1600.22
서비스 팩 1 10.00.2531.00
서비스 팩 2 10.00.4000.00
서비스 팩 3 10.00.5500.00

SQL Server 2005
RTM 9.00.1399
서비스 팩 1 9.00.2047
서비스 팩 2 9.00.3042
서비스 팩 3 9.00.4035
서비스 팩 4 9.00.5000.00

How to determine the version and edition of SQL Server and its components
http://support.microsoft.com/kb/321185/en-us  
:
Posted by 커널64