Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 520건
  Logical Query Processing 02 
작성일시 : 2009. 3. 18. 13:24 | 분류 : SQL Server/Kernel

본 글을 읽기 위해서는 이전 Logical Query Processing 01 를 먼저 확인 하고 읽어야 한다.
본 문서는 INSIDE SQL SERVER 2005의 내용을 기반으로 작성 되었다.

Logical Query Processing 01 : http://maystyle.tistory.com/420

Step 6 CUBE 및 ROLLUP 옵션 적용
만약 CUBE 나 Rollup 조건이 기술 되어 있는 경우 Supergroup을 만들고 해당 그룹을 VT6에 추가한다..

Step 7 Having 필터 적용
Having 필터는 이전 스탭에서 생성된 테이블에 적용된다. 오직 <having_condition>이 참인 그룹만 Step7의 가상 테이블 VT7 이 된다
HAVING COUNT(O.orderid) < 3 조건에 의해 이전에 VT 5의 KRLOS 는 제거 된다.

VT7
FISSA    Madrid    NULL    NULL
FRNDO    Madrid    1    FRNDO
            Madrid    2    FRNDO

* Aggregate Function 은 Subquery 를 허용하지 않는다. (예 HAVING SUM((SELECT …)) > 10 

Step 8 Select List 처리
SELECT 단계는 최초로 호출자의 요청에 맞는 table을 생성하는 단계입니다. Step 5에서 명시한 것과 같이 Group By에 선언이 되었다면 SELECT 절에서는 반드시 Aggregate Function을 사용하고 있어야 합니다. (예 SELECT customerID, SUM(price) … Group by customerID)
select c.customerid, COUNT(o.orderid) as numorders 쿼리를 적용하면 VT8이 생성 된다.

VT8

FISSA    0
FRNDO    2

Step 9 DISTINCT 조건 적용
DISTINCT 조건이 명시되어 있으면 이전에 생성된 VT8 의 중복된 ROW들을 삭제한다. 사실 GROUP BY 가 사용될 때는 DISTINCT는 별 의미가 없다. (실제로 ROW 삭제를 않한다.)

Step 10 ORDER BY 조건 적용
이전의 VT9의 테이블을 정렬한 커서 VC10을 리턴 한다.  해당 결과는 TABLE이 이 아니다. 다음 결과를 보자

SELECT * FROM (SELECT orderid FROM orders ORDER BY orderid) AS D;
위의 쿼리는 에러를 일으킨다. SQL 구문에서 ORDER BY 구문을 table expression 으로 사용할 수 없다.

VC 10
FISSA    0
FRNDO    2

Step 11 Top 옵션 적용
우리가 TOP 조건을 주면 해당 해당 조건에 따라 (물리적으로 테이블에 데이터가 나열된 순서에 맞춰) TOP 조건을 적용한 VT 11을 리턴 한다.

TOP 과 ORDER BY를 사용하게 되면 table expression 이 가능해집니다. 어차피 TOP의 반환 값이 Table이기 때문이죠. 이를 태면 위의 SELECT * FROM (SELECT orderid FROM orders ORDER BY orderid) AS D;  는 SELECT * FROM (SELECT TOP 100 PERSENT orderid FROM orders ORDER BY orderid) AS D; 변경하면 실행이 가능합니다.

그와 더불어 TOP에는 WTIH TIES 옵션을 같이 써야 하는 경우가 있다. 이를 태면 상위 10%의 학생들의 이름을 확인 하라 라는 쿼리가 있다고 가자.
이 경우 SELECT TOP 10 PERSENT name FROM students ORDER BY score 로 표현할 수 있다. 다만 이때 10%에 걸리는 학생들이 여러 명일 경우에는 실제로 10%가 넘어갈 수도 있고, 해당 학생들은 본 쿼리에서 확인이 안될 것이다. 이 경우 모든 학생들의 리스트를 확인 하기 위하여 WITH TIES 옵션을 사용해야 한다.

|
  MSCS 클러스터 환경에서 Error 1721 발생한다. 
작성일시 : 2009. 3. 13. 10:17 | 분류 : Windows Server/Cluster

[환경]
2 node A/A Cluster (SQL Server)

[현상]
재 부팅 이후 그룹들이 한쪽 노드에 몰리고 나머지 노드에서 클러스터 시작이 않됨
이후 재 부팅을 하게 되면 정상 적으로 클러스터 서비스가 시작되나 이네 Error 1721 오류가 발생하면서 “리소스 부족” 메세지와 함께 클러스터에 “!”가 표시됨

또한 클러스터 로그는 아래와 같은 메세지를 발생 시킵니다.

[JOIN] Sponsor XXX.XXX.XXX.XXX is not available (JoinVersion), status=1753.
[JOIN] JoinVersion data for sponsor XXX.XXX.XXX.XXX is invalid, status 1753.
[JOIN] Sponsor ServerName is not available (JoinVersion), status=1753.
[JOIN] JoinVersion data for sponsor ServerName is invalid, status 1753.
[JOIN] Sponsor XXX.XXX.XXX.XXX is not available (JoinVersion), status=1753.
[JOIN] JoinVersion data for sponsor XXX.XXX.XXX.XXX is invalid, status 1753.
[JOIN] Spawning thread to connect to sponsor XXX.XXX.XXX.XXX
[JOIN] Asking XXX.XXX.XXX.XXX to sponsor us.
[JOIN] Waiting for all connect threads to terminate.
[JOIN] Sponsor XXX.XXX.XXX.XXX is not available (JoinVersion), status=1722.
[JOIN] JoinVersion data for sponsor XXX.XXX.XXX.XXX is invalid, status 1722.
[JOIN] All connect threads have terminated.
[JOIN] Unable to connect to any sponsor node. [INIT] Failed to join cluster, status 53

[설명]
클러스터 연결을 위해서는 RPC 포트를 이용하게 됩니다. 이때 이 RPC 포트가 100개 미만일 경우 위와 같이 리소스가 부족하다는 메세지가 뜨게 됩니다. 기본값은 10개 입니다. 즉 위의 경우에는 클러스터가 Active 노드와의 통신을 하기 위한 RPC 포트가 부족하기 때문에 발생하는 메세지 입니다.

[해결 방안]
HKEY_LOCAL_MACHINE\Software\Microsoft\RPC\Internet 레지스트리에 보면 아래와 같은 레지스트리가 있습니다.
Ports: REG_MULTI_SZ: 4000-4009
PortsInternetAvailable: REG_SZ: Y
UseInternetPorts: REG_SZ: Y

지금 위의 예는 기본 값에 해당합니다.
위에서 Ports 값을 5000-5099 로 변경하면 포트 부족으로 인한 문제가 해결 되게 됩니다.

[추가 1]
여러분이 RPC를 Heavy 하게 사용하는 서버를 운영하고 있다면 (예 Dcom 등등) 이 경우에는 포트 갯수를 100개 이상으로 늘려주셔야 할 수 도 있습니다.

[추가 2]
Windows에서 사용하는 포트 갯 수 늘리기
Windows의 기본 값은 약 5000개의 포트를 사용하는 것입니다. 해당 포트는 65000여개 까지 늘려줄 수 있습니다.
아래의 레지스트리 값을 수정하시면 됩니다. (없을 경우 생성하시면 됩니다.)

HKLM\System\currentcontrollset\services\tcpip\parameters
MasUserPort
REG_DWROD : 65534

|
  IIS가 갑자기 죽고 해당 서버로 터미널 접속이 않된다. 
작성일시 : 2009. 3. 13. 10:16 | 분류 : Windows Server/IIS

[현상]
현상 1
Event Source: W3SVC
Event ID: 1004
Description: Cannot register the URL prefix 'http://*:80/' for site '1'. The site has been deactivated. The data field contains the error number.

현상 2
Terminal Service가 시작되어 있으나 접속이 불가능

[설명]
위와 같이 이벤트 ID 1004가 뜨면서 IIS 메니저에서 웹 서비스 시작 시 다른 프로세스가 리소스를 소유하고 있기 때문에 웹서비스 시작이 않된다는 메세지가 발생하는 경우가 있습니다.
이 경우는 100% 80포트나 433등 웹 서버에서 사용하는 포트를 다른 프로세스가 가로챈 경우가 대부분입니다.
해당 프로세스는 쉽게 찾을 수 있습니다.

해당 메세지가 발생하면 먼저 netstat –ano 를 통해서 80포트를 사용중인 프로세스의 PID 값을 알아냅니다.
이후 tasklist 명령어를 통해 해당 PID 값을 비교하면 충분 히 찾을 수 있습니다.

다만 이번 경우에 특이한 점은 바로 해당 80 포트를 Terminal 서비스에서 사용하고 있었다는 점이였습니다.
터미널 서비스의 경우 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber 키 값을 수정하여 원하는 포트로 변경이 가능합니다.

그런대 왜?
왜 하필 80으로 변경했을 까요?

바로 80은 외부에 오픈되는 포트이기 때문입니다.
즉 악의적인 사용자가 RDP 포트를 80으로 변경하고 접속을 시도했기 때문에 웹서비스가 중지된 것이죠.

그렇다면 한 가지 더!
어떻게 그렇게 했을까요?

보통은 멜웨어나 다양한 프로그램들이 사용될 수 있겠죠.
전 이번 경우에 의심하는 부분은 바로 Cross Acess 공격입니다.
게시판 등지에 악의적은 코드를 심어 서버에서 실행하게 하는 공격이죠… 흠…
원래 IIS나 톰캣 같은 어플리케이션은 Network 서비스로 실행 되기 때문에 그 권한에 한계가 있습니다.
하지만 JSP 나 ASP의 실행 등의 문제로 인해 System 계정을 이용하는 경우나 특정 DCOM 프로그램의 경우 아예 권한 문제를 방지하기 위해 SYSTEM 계정으로 실행 되는 경우가 있죠.

이런 경우… 위와 같은 아주 쓰래기 같은 인간의 공격을 받는다면…
대부분의 경우 견고한 시스템 들이기 때문에 뚧는게 쉽지는 않지만… 가끔은 위와 같이 아주 작은 공간이 나쁜 쓰래기 크래커의 공격 대상이 되기도 합니다.

|
  Kerberos Windows 2003 과 Windows 2008의 차이? 
작성일시 : 2009. 3. 13. 10:16 | 분류 : Windows Server/Network

88 번 포트는 Kerberos 통신을 위한 포트입니다. (뭐 다 알고 계시겠죠?? ^^)

자 이 88번 포트가 차단이 되는 경우에 Domain Controller가 Windows 2003이냐 Windows 2008이냐에 따라 반응이 다르게 나타납니다.

먼저 Windows 2003은 NTML Negosiation 을 해서 사용자 인증을 해줍니다.
하지만 Windows 2008은??? 절대 인증을 안해주는 군요…

자 DC를 Windows 2008로 업그래이드 하고 인증이 않된다면 88번 포트가 열려있는지 확인해보세요…^^

|
  SQL 2008 Cluster에 노드 추가 시 The current SKU is invalid 메세지와 함께 실패한다. 
작성일시 : 2009. 3. 13. 10:15 | 분류 : SQL Server/Cluster

요즘에 일도 많고 힘들어 죽겠는데…
별것도 아닌 버그 때문에 또 나를 괴롭히네요.

SQL Server 2008 에서 발생하는 버그예요.
Cluster에 노드 추가 시 발생합니다.

정말 해외에 있는 클러스터에 원격으로 겨우 겨우 설치하는 중인데… 아주 가지 가지 하는군요…
뭐 하나 깔끔하게 되는게 없는 느낌입니다… 지금 피곤해서 그런건지… 어쩐지는 모르지만…
설치 마지막 단계에서 패치 없다고 (Windows 2003의 경우 KB937444 가 선행 설치되어야 함) 패치 설치하고 재 부팅 시키고 첨부터 설치를 시키질 않나…
설치 초반부터 1~2번 재 부팅은 기본이니… 왠지 MS 제품이 아닌거 같은 느낌까지 드는군요…

[현상]
image

[해결 방법]
Command 설치 혹은 http://support.microsoft.com/kb/957459 의 hotfix 설치
Command 설치 방법 : http://msdn.microsoft.com/en-us/library/ms144259.aspx
예) 설치 미디어가 있는 폴더로 이동한 후 아래 구문 실행
setup.exe /ACTION=AddNode /INSTANCENAME="MSSQLSERVER"
/SQLSVCACCOUNT="<Domain\Account>" /SQLSVCPASSWORD="<Password>"
/AGTSVCACCOUNT="<Domain/Account>", /AGTSVCPASSWORD="<Password>"
/ASSVCACCOUNT="<Account/Password>" /ASSVCPASSWORD=”<Password>” /INDICATEPROGRESS

전 끝내… Command 로 설치했습니다.
image

[참고]
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=363036&wa=wsignin1.0
http://support.microsoft.com/kb/957459

|
  Windows 2008 System 상태 백업 
작성일시 : 2009. 3. 10. 16:11 | 분류 : Windows Server/ETC

시스템의 문제에 대한 대비로써도 그렇고 Active Directory을 위해서도 그렇고, 우리는 System Status Backup 이 필요합니다.

문법은 간단합니다.
wbadmin start systemstatebackup –backupTarget:”볼륨이름:”
으로 해주면 됩니다. 다만… 같은 볼륨에는 백업이 않되네요…^^;;

On Windows 2008, System status backup is supported in the command line prompt.
You can use ‘wbadmin start systemstatebackup –backupTarget:”volume name":”’ command.

But it doesn’t support to backup same volume. So your backupTarget would be a another volume.

image

|
  Cluster 구성 정보 삭제 
작성일시 : 2009. 3. 10. 16:07 | 분류 : Windows Server/Cluster

Windows 2003 의 Cluster는 이전과는 달리 삭제가 불가능 합니다.
다만 클러스터 구성 정보는 제거가 가능하죠.

cluster node nodename /forcecleanup

중요한 것은 만약 Binary들이 정상적으로 설치가 되어 있는 경우에는 Cleanup 한 이후 다시 클러스터에 재 조인을 하게 되면 해당 클러스터 관련 정보들이 복제 되기 때문에 거의 문제가 없이 클러스터에 조인이 가능 하다는 점 입니다.

물론 해당 작업을 하기 이전에 Active Node의 HKLM\Cluster 하위의 잘못 구성된 정보를 수정하셔야 겠죠?

출처 : http://support.microsoft.com/?id=282227

|
  SYSVOL Replication이 끝났는데도 공유 되지 않으면? 
작성일시 : 2009. 2. 26. 12:03 | 분류 : Windows Server/Active Directory

원인 규명을 위해 HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters 의 레지스트리 키를 일일히 뒤졌습니다.
확인 해 보니 SysVolReady 키 값이 0 이더군요… 이미 DC를 설치한지 약 6시간이 지난 시점에서…ㅡ,.ㅡ;;
물론 리플리케이션 모니터에서도 전혀 문제가 없었구요…

Sysvolready 는 원래 DCpromo를 실행 하는 중이나 실행이 막 끝난 상태 혹은 백업을 하는 경우에 해당 값을 0으로 셋팅합니다. 그리고 자신의 내용을 수정하는 거죠…
하지만 충분한 시간이 지난 이후에도 여전이 0 이였다면 문제가 있는 거겠죠…

전 일단 1로 수정해서 문제를 해결은 했습니다만… 언제 문제가 또 터질지 모르겠군요.
그나저나 Windows 2008은 Resourece Kit 이나 Support Tool이 없는 걸까요?
NetDiag 마져도 실행이 않되더군요…

|
 Prev   1   ···   16   17   18   19   20   21   22   ···   65   Next