복제 - 복제필드중 text, ntext, varchar(max), image 등에 대한 복제 문제 해결

복제를 구성하다보면,
text, image 필드 같이 큰값을 게시 해야 하는 경우가 있는데, 이경우 insert, update, writetext 또는 updatetext작업이 구성된 제한값을 초과해서 아래와 같은 오류를 발생시키기도 한다.

해결 방법은
서버 구성 정보 중에 "max text repl size" 매개 변수를 재설정해주면된다.

1. sp_configure 로 서버 구성확인

2. "max text repl size" 수정.

EXEC sp_configure 'max text repl size', 2147483647
Go
RECONFIGURE WITH OVERRIDE
Go

터미널서버 클라이언트 액세스 라이센스 문제.

서버 셋팅후 특별한 조정이 없었다면, 서버 운영도중 터미널서버 접속시 아래와 같은 경고문구를 만나기도 한다.

"이 컴퓨터에 대해 사용 가능한 터미널 서버 클라이언트 액세스 라이센스가 없으므로 원격 연결이 끊어졌습니다."

이럴 경우,
아래와 같이 해주면, 해결된다.

관리도구 > 터미널서버 구성 > 서버설정 > 라이센스 의 값을 "사용자단위"로 변경을 해주면된다.

[웹서버 - IIS6]application pool 재시작하기

iis6에 있는 응용프로그램 관리에서도 재시작에 대한 옵션을 사용할수 있다.
그러나, 가끔씩은 그 작업이 재대로 수행되지 않아서, 어플리게이션풀이 죽어 싸이트가 죽어있는경우가 있다. 이때, 윈도우스케줄에 아래 스크립트를 이용해서 스케줄을 해주는 방법을 추가로 할수 있다.


' Start an Application Pool
strComputer = "."
Set objWMIService = GetObject _
    ("winmgmts:{authenticationLevel=pktPrivacy}\\" _
        & strComputer & "\root\microsoftiisv2")

Set colItems = objWMIService.ExecQuery _
    ("Select * From IIsApplicationPool Where Name = " & _
        "'W3SVC/AppPools/[어플리케이션풀이름]'")

wscript.echo("응용프로그램풀 재시작 - "& Now())
For Each objItem in colItems
    objItem.Stop
    objItem.Start
Next
wscript.echo("응용프로그램풀 재시작 완료 - "& Now())

mssql 스키마 속성에 걸려 있는 규칙(rule) 수정하기.

스키마 속성에 규칙(rule)을 적용한 경우가 있다. 이경우 규칙을 수정해야 하는 경우 해당 룰을 먼저 바인딩 된 속성에서 바인딩 해제를 해준후 규칙을 수정하고, 다시 바인딩 시켜주어야 한다.

먼저, 바인딩된 스카마 속성에서 바인딩 해제후
--> exec sp_unbind [tbl_good].[goodType_code]
rule 수정,
--> DROP RULE [dbo].[chkGoodType]
--> CREATE RULE [dbo].[chkGoodType]
      AS @chkGoodType in (1, 2, 3, 4, 5, 6)
재바인딩.
--> EXEC dbo.sp_bindrule @rulename=N'[dbo].[chkGoodType]', @objname=N'[dbo].tbl_good].[goodType_code]' , @futureonly='futureonly'
GO

이렇게 하면된다.

MS-SQL 복제에서 distribution cleanup이 지연될때


복제 서버를 운영하다 보면, 복제 데이타베이스 정리가 지연되어 데이타베이스 사이즈가 계속 증가하는 경우가 생긴다.

이때, 복제의 모니터의 기타에이전트 에서 "배포 정리:distribution" 이 잘 실행되고 있는지 확인을 하여 제대로 실행되지 않거나, 지연되고 있다면, 아래 처럼 수동으로 처리를 해준다.

1. msrepl_transactions, MSrepl_commands 테이블의 row수를 확인한다.

2. distribution cleanup job의 최근 실행시간을 확인해본다.

 

만약 row수가 많이 늘어나있고, job의 실행시간도 많이 지연되어 있다면

log reader agent를 일단 중지시키고 복제 트랜잭션의 max retention 시간을 줄여본다.

 

EXEC dbo.sp_MSdistribution_cleanup @min_distretention = 0, @max_distretention = ??

위 명령의 ? 부분이 보통 기본값(120??)으로 되어있을텐데 용도에 따라서 줄여본다.

나의 경우에는 처음에는 10으로 그 다음에는 2로 실행했다.

외국 뉴스그룹 같은 경우에는 0으로 하던데 그럴때는 아직 반영되지 않은 트랜잭션이

삭제될 수 있으므로 주의해야한다.

distribution cleanup job의 실행주기를 짧게(분 단위로..) 조정하고 기다리면 실행될 것이다.

 

만약 delete 작업이 오래 걸리는 것 같으면 DB의 복구모델이 simple인지 반드시 확인~!!



mssql2005에서 로그인 계정에 대한 암호만료정책 해제 하기

mssql2005 계정생성후 사용중에 암호 만료 정책에 의해서 암호를 바꾸라는 메세지가 나올때, 아래와 같이 해주면, 정책부분을 변경할수 있다.

SQL2005 MUST_CHANGE=Off 
처리하기.

ALTER LOGIN X WITH PASSWORD = 'Y' UNLOCK
(X 와 Y 는 사용하고 있는 계정과 계정패스워드 이다.)

터미널서비스 관리


터미널 서비스 관련 명령어.

동일 네트워크에 있는 다른 서버에서
1. 터미널서비스가 세션 초과로 접속 안될때.
--> tsdiscon 세션id /server:[해당서버IP(서버호스트명)]

2. 터미널서비스 사용자 및 세션ID값 확인하기
--> query user /server:[해당 서버IP]

3. 원격에서 컴퓨터 재부팅하는 명령
--> tsshutdn 1 /server:[해당서버IP주소] /reboot /v

mssql single mode 접속하기

mssql 관리자 싱글모드 접속 명령
command 창에서

==> net start mssqlserver /m