#SQL Server 연결서버 사용시 통계 업데이트가 발생할때

연결서버을 사용하여 Select 쿼리만 날릴 뿐인데,
DBCC SHOW_STATISTICS 가 실패했다는 에러메시지가 날아와서 당황했다.

에러메시지는 2557, DBCC SHOW_STATISTICS를 실패했다는 메시지.

구글링 결과 아래와 같은 이야기가 나왔다. 기존에 알고 있던 정보와 같이해서 정리한다.

연결서버에 쿼리를 날릴때 MSSQL 서버는 정보 확인을 위해 아래와 같은 SP들을 호출한다. 

exec [AdventureWorks].[sys].sp_tables_info_90_rowset N’SalesOrderHeader’,N’Sales’,NULL 

exec [AdventureWorks].[sys].sp_columns_100_rowset N’SalesOrderHeader’,N’Sales’,NULL 

exec [AdventureWorks].[sys].sp_indexes_100_rowset N’SalesOrderHeader’,NULL,N’Sales’ 

exec [AdventureWorks].[sys].sp_check_constbytable_rowset N’SalesOrderHeader’,N’Sales’,NULL,NULL 

exec [AdventureWorks].[sys].sp_table_statistics2_rowset N’SalesOrderHeader’,N’Sales’,N’AdventureWorks’,NULL,NULL,NULL

이는 연결서버를 사용할때 DML 의 성격과 관계없이 발생한다. 쿼리를 할려면 최소한 메타데이터를 알아야 하는 것이고, 보통 연결서버에 쿼리를 날릴때 조회권한이 있는데 통계정보를 볼 권한이 없다는 건 좀 말이 안된다.

구글링한 블로그에 따르면 
db_owner 일때나 sysadmin 정도의 권한이 있어야 제대로 된 조회가 가능하다는 건데
멍청한 짓이 아닐 수 없다.

대부분 보안 문제로 연결서버의 로그인에게는 최소한의 읽기권한만 줄텐데 이때 이렇게 멍청하게 작동할 줄이야.

서비스팩에서 픽스가 된건지는 확인을 해봐야겠다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.