'스터디/Database'에 해당되는 글 3건
- 2009/04/27 데이터베이스 복제 정보 삭제 방법
- 2008/06/16 Microsoft SQL Server 2008 White Papers
- 2008/06/14 OLE DB 연결 시, Provider가 제공하는 서비스 활성화 방법
기존에 복제 (게시 - 구독)을 수행했던 데이터베이스의 복제 기록이 완전히 삭제되지 않을 경우,
sp_repldone을 실행해도 "데이터베이스가 게시되지 않았습니다"라는 메시지를 표시된다.
이 경우, Transaction log를 Truncate하고자 할 때 아래 메시지를 표시하며 오류가 발생한다.
"로그 시작 부분의 레코드가 복제 보류 중이므로 로그가 잘리지 않았습니다.
로그 판독기 에이전트가 실행중인지 확인하거나 sp_repldone을 사용하여
트랜잭션이 분산된 것으로 표시하십시오."
이럴 때 해결방법은 당연하게도 "복제상태를 clear 하는 것"이 되겠다.
방법 1
1번 방법으로 해봤는데 잘 되더라.
sp_repldone을 실행해도 "데이터베이스가 게시되지 않았습니다"라는 메시지를 표시된다.
이 경우, Transaction log를 Truncate하고자 할 때 아래 메시지를 표시하며 오류가 발생한다.
"로그 시작 부분의 레코드가 복제 보류 중이므로 로그가 잘리지 않았습니다.
로그 판독기 에이전트가 실행중인지 확인하거나 sp_repldone을 사용하여
트랜잭션이 분산된 것으로 표시하십시오."
이럴 때 해결방법은 당연하게도 "복제상태를 clear 하는 것"이 되겠다.
방법 1
sp_configure 'allow', 1
go
reconfigure with override
go
update master..sysdatabases set category = category ^ 1 WHERE name = {DBNAME}
go
use {DBNAME}
go
UPDATE sysobjects set replinfo = 0
go
EXEC sp_repldone NULL, NULL, 0, 0, 1
go
UPDATE master..sysdatabases set category = category & ~1 WHERE name = {DBNAME}
go
BACKUP LOG {DBNAME} WITH TRUNCATE_ONLY
go
reconfigure with override
go
update master..sysdatabases set category = category ^ 1 WHERE name = {DBNAME}
go
use {DBNAME}
go
UPDATE sysobjects set replinfo = 0
go
EXEC sp_repldone NULL, NULL, 0, 0, 1
go
UPDATE master..sysdatabases set category = category & ~1 WHERE name = {DBNAME}
go
BACKUP LOG {DBNAME} WITH TRUNCATE_ONLY
방법 2
use {DBNAME}
go
sp_removedbreplication {DBNAME}
go
go
sp_removedbreplication {DBNAME}
go
1번 방법으로 해봤는데 잘 되더라.
Microsoft SQL Server 2008에 관련된 백서들이 모여있는 곳.
http://www.microsoft.com/sqlserver/2008/en/us/white-papers.aspx
P.S. 이건 또 언제 배우고 써먹나. -_-; 우웍
OLE DB Provider를 이용하여 연결할 때, Provider가 제공하는 여러 서비스의 활성화 여부를 선택할 수 있다.
(가장 관심이 가는 것은 당연히 Connection Pooling이지만.. 찾는 김에 나머지도 찾아봤다.
개인적인 생각으로, Connection Pooling같은 기능은 특별한 이유가 없다면 별도로 구현할 필요가 없다.
어차피 OS에서 제공하는 기능이라면, 그냥 사용하면 되는 것 아닌가?
물론 개념을 이해하기 위해 Thread pool이나 Connection Pool 같은 것을 만들어 보는 건 의미가 있지만,
Time to market이 중요한 입장에서 굳이 그렇게 할 필요는 없다.)
잠시 말이 돌았다. 어쨌든, 다음 설정 변수에 대한 bitwise 연산을 통해 설정 변경이 가능하다.

Bitwise 연산의 예는 다음과 같다.

아니면, Connection string에서 지정할 수도 있다.
Connection String에 다음과 같이 설정 항목을 추가하면 된다.
* 연결 문자열 예제
* 연결 문자열 설정 항목

그런데, 사실 여기서 중요한 건, 기본 설정은 '모든 서비스 활성화' 라는 것.
뭐.. 그렇댄다.
References
(가장 관심이 가는 것은 당연히 Connection Pooling이지만.. 찾는 김에 나머지도 찾아봤다.
개인적인 생각으로, Connection Pooling같은 기능은 특별한 이유가 없다면 별도로 구현할 필요가 없다.
어차피 OS에서 제공하는 기능이라면, 그냥 사용하면 되는 것 아닌가?
물론 개념을 이해하기 위해 Thread pool이나 Connection Pool 같은 것을 만들어 보는 건 의미가 있지만,
Time to market이 중요한 입장에서 굳이 그렇게 할 필요는 없다.)
잠시 말이 돌았다. 어쨌든, 다음 설정 변수에 대한 bitwise 연산을 통해 설정 변경이 가능하다.
Bitwise 연산의 예는 다음과 같다.
아니면, Connection string에서 지정할 수도 있다.
Connection String에 다음과 같이 설정 항목을 추가하면 된다.
| All services (default) | "OLE DB Services = -1;" |
| All except pooling and automatic transaction enlistment | "OLE DB Services = -4;" |
| All except Client Cursor Engine | "OLE DB Services = -5;" |
| All except pooling, automatic transaction enlistment, and Client Cursor Engine | "OLE DB Services = -8;" |
| Pooling and automatic transaction enlistment only, session level aggregation only | "OLE DB Services = 3;" |
| No services | "OLE DB Services = 0;" |
* 연결 문자열 예제
Provider=SQLOLEDB;OLE DB Services=-4;Data Source=localhost;Integrated Security=SSPI;
* 연결 문자열 설정 항목
그런데, 사실 여기서 중요한 건, 기본 설정은 '모든 서비스 활성화' 라는 것.
뭐.. 그렇댄다.
References
- http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/c0011827.htm
- http://doc.ddart.net/mssql/sql2000/html/mdacxml/htm/oledboverriding_provider_service_defaults.htm
- http://www.hoons.kr/Board.aspx?Name=asptip&Mode=2&BoardIdx=4916&Key=&Value=
- ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/wd_adonet/html/2bd83b1e-3ea9-43c4-bade-d9cdb9bbbb04.htm (Visual Stuido 2008 Documentation)
- http://msdn.microsoft.com/ko-kr/library/ms254502.aspx (이게.. 쓰는 시점에는 연결이 안되더라만..)


Prev
Rss Feed