Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 3건
  replication 을 완전히 삭제하고 싶다면... 
작성일시 : 2008. 5. 29. 18:17 | 분류 : SQL Server/Administration | 태그 : Delete, is_dts_replicated, is_merge_published, is_replicated, Replication, sql DAC 모드, SQL Server 2005, sys.columns

이전에 지웠다고 다 지운 리플리케이션 정보 중 일부가 sys.columns 에 아직도 남아 있어 삭제하는 일을 했습니다.
혼자 기억하기는 아쉬워서 남겨 봅니다.

[현상]
컬럼의 길이 등을 변경하거나, sp_rename 을 실행할 때 아래와 같은 메시지가 뜨면서 변경에 실패한다.
Msg 4928, Level 16, State 1, Procedure sp_rename, Line 520
Cannot alter column '<column-name>' because it is 'REPLICATED'.

[원인]
Replication 또는 이전에 설정해 놓은 Replication 설정이 남아 있어 발생한다.
아래와 같이 sys.columns의 is_replicated 및 is_merge_published is_dts_replicated의 칼럼값을 확인 하여 설정 여부를 확인 할 수 있습니다. 제가 경험했던 케이스의 경우에는  is_non_sql_subscribed 칼럼이 1로 설정이 되어 해당 컬럼에 대한 변경이 불가능했었습니다.

[Action Item]
아래 3가지 쿼리를 통해 replication의 설정 여부를 확인 할 수 있습니다.
DB replication 설정 여부 확인 : select is_published, * from sys.databases
Table의 게시 여부 여부 확인 : select is_published, * from sys.objects where is_published=1
Column의 게시 여부 확인 : select * from sys.columns where object_id = object_id('Table 명')

replication이 걸려 있음을 확인 했다면 해당 설정을 삭제 해 줍니다.
sp_msunmarkreplinfo 을 통해 특정 테이블에 대한 게시 정보를 삭제를 할 수 있습니다.
하지만 쉽지 않더군요...

제가 이전에 사용했던 방법은 sp_removedbreplication  인데, 실제로 데드락으로 인해 실패하는 경우가 많아 모든 정보를 지우는데 실패한 경험이 있습니다. 해당 프로시저에 대해서는 이전 포스트(http://maystyle.tistory.com/348)를 참조하시면 됩니다.

마지막으로 제가 선택한 방법은 sp_MSarticlecol 였습니다. 해당 내용은 SSIS, DTS 쪽 블로그를 통해서 확인 할 수 있습니다.

먼저 더미 replication을 만듭니다.
다음으로 게시 정보의 ID를 확인 합니다.
exec sp_helparticle 'replication 이름'

그런 다음 cmd 창을 열어 sql DAC 모드로 연결 합니다.
C:>sqlcmd -A -S'서버명'

마지막으로 is_non_sql_subscribed 의 값을 0으로 설정하기 위해 다음 쿼리를 수행 합니다.
1) EXEC sys.sp_MSarticlecol @artid='위에서 확인한 리플리케이션의 article id', @colid=NULL, @type='nonsqlsub', @operation='drop';
2) go

[기타 정보 확인을 위해 사용 했던 쿼리]
sp_help, select * from sys.objects where type='u'

[출처]
Microsoft 기술 지원 엔지니어 분 및 SSIS 팀 블로그
http://blogs.msdn.com/mangeshd/archive/2008/05/22/altering-properties-of-a-column-fails-with-cannot-alter-column-column-name-because-it-is-replicated.aspx

Name   Password   Home   Secret   Submit
  복제가 정말 정말 안지워지십니까? 
작성일시 : 2008. 5. 15. 10:50 | 분류 : SQL Server/Administration | 태그 : Delete, menual remove, Remove, Replication, sp_removedbreplication, SQL Server

별 짓을 다해봐도 복제가 안지워 지십니까?

방법 1 : http://msdn.microsoft.com/ko-kr/library/ms152757.aspx
방법 2: http://support.microsoft.com/kb/324401

1번과 2번 모두 써 보셨습니까?
마지막으로 희망을 하나 걸어 보세요.
sp_removedbreplication : 모든 복제 관련 개체를 삭제 합니다.

먼저 다음 쿼리를 이용하여 복제 구성이 잘 삭제 됐는지 확인 합니다.
select replinfo, * from sysobjects where replinfo=0 인 녀석을 찾으면 됩니다.

[구문]
sp_removedbreplication [ [ @dbname = ] 'dbname' ] [ , [ @type = ] type ]

[인수]
@dbname= 'dbname'데이터베이스의 이름입니다. dbnamesysname이며 기본값은 NULL입니다. NULL인 경우 현재 데이터베이스를 사용합니다.

@type = type
데이터베이스 개체를 제거 중인 복제의 유형입니다. typenvarchar(5)이며 다음 값 중 하나일 수 있습니다.
tran : 트랜잭션 복제 게시 개체를 제거합니다.
merge : 병합 복제 게시 개체를 제거합니다.
both(기본값) : 모든 복제 게시 개체를 제거합니다.

[참고]
http://msdn.microsoft.com/ko-kr/library/ms188734.aspx

Name   Password   Home   Secret   Submit
  SQL 2000 / 2005 Replication 수동 삭제 방법 
작성일시 : 2008. 3. 26. 16:26 | 분류 : SQL Server/Administration | 태그 : mananully, Remove, Replication, 게시자, 구독자, 배포자, 수동 삭제, 제거

Replication 의 수동 삭제는 다음의 순서에 따라 이루어 져야 한다.
구독자 > 게시자 > 배포자

[게시자 삭제 방법]

스냅샷 게시자 삭제 (sp_droppublication)
You can use the sp_droppublication system stored procedure to drop a publication and the articles that are associated with the publication. You must run the stored procedure at Publisher on the publication database.
- 예
USE <Publication database name>
GO
EXEC sp_droppublication @publication = N'<Publication name>'
USE master
GO
exec sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

트렌젝션 로그 게시자 삭제 (sp_dropmergepublication)
You can use the sp_dropmergepublication system stored procedure to drop a merge publication and the Snapshot Agent that is associated with the merge publication. The articles that are associated with the publication are also dropped. You must run the stored procedure at Publisher on the publication database.
- 예
USE <Publication database name>
GO
EXEC sp_droppublication @publication = N'<Publication name>'
USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value = N'false'

머지 게시자 삭제 (sp_replicationdboption)
You can use the sp_replicationdboption system stored procedure to set a replication database option for the current database. You must run the stored procedure at the Publisher server.
- 예
USE <Publication database name>
GO
EXEC sp_dropmergepublication @publication = N'<Publication name>'
USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'merge publish', @value = N'false'

구독자 / 배포자 삭제 는 다음 문서를 참고한다.
http://support.microsoft.com/kb/324401

Name   Password   Home   Secret   Submit