2007~2011/SQL Server2008. 12. 26. 13:19

SQL Cluster 환경에서 SQL Server Management Studio 로 데이터베이스 속성을 보려고 할 때 발생하는 권한 이슈입니다. 데이터베이스를 생성한 계정을 인식할 수 없을 때, dbo와 맵핑된 login 정보를 잃게 되며 이는 Cluster 환경에서 시스템 로컬 계정을 사용하여 데이터베이스를 생성하였을 때 failover 시 이러한 현상이 발생할 수 있습니다.


[환경]
SQL Server 2005 SP2 Cluster


[현상]
SQL Server Management Studio 에서 sa 계정으로 사용자 데이터베이스 선택 후 속성을 확인하고자 할 때 아래와 같은 오류 메시지 발생

데이터베이스 '[LAIGO]'에 속성 Owner을(를) 사용할 수 없습니다. 이 속성이 이 개체에 대해 존재하지 않거나
액세스 권한이 부족하여 검색하지 못할 수 있습니다.  (Microsoft.SqlServer.Smo)



Property Owner is not available for Database '[LAIGODB]'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. (Microsoft.SqlServer.Smo)


[원인]
Orphaned database owner 이슈로써 Database owner(dbo) 와 login 이 맵핑되어 있지 않습니다. 현재 머신에는 LAIGODB 를 생성한 OWNER SID 와 일치하는 계정이 존재하지 않습니다. SQL Cluster 환경에서 데이터베이스를 생성할 때, 반드시 Windows Domain 인증 계정 또는 SQL 계정을 사용해야 합니다. 로컬 컴퓨터 계정이나 데이터베이스를 생성한 계정이 존재하지 않을 경우 이러한 문제가 발생할 수 있습니다.


[해결방법]
1. 아래 쿼리를 수행하여 LAIGODB의 데이터베이스 소유자를 지정합니다.

   USE LAIGODB
   GO 
   SP_CHANGEDBOWNER 'sa'

 

[분석결과]
1. LAIGODB 데이터베이스의 db_owner 역할 멤버 : dbo, laigo

2. 데이터베이스 OWNER 정보 확인

sp_helpdb 'LAIGODB'

name         db_size            owner    
----------------------------------------
laigodb       49327.21 MB    NULL    -- 데이터베이스 소유자가 NULL 상태 

3.  LAIGODB 데이터베이스 사용자 - dbo 정보 

 


4. OWNER SID 확인

SELECT NAME, OWNER_SID FROM SYS.DATABASES;

NAME    OWNER_SID
-----------------------------------------------------------------------------------------
laigo      0x01050000000000051500000042A273533CEE59C36925E5C1F5120000

5. LAIGODB OWNER SID와 동일한 login 검색 - 데이터베이스 생성 SID가 존재하지 않음

SELECT SID FROM SYS.SYSLOGINS;

SID             
----------------------------------------------------------------------------------------------------
0x01                                                                                                                         0x01060000000000090100000014B38AA9E7C1EFBAB4D1A57537EF1B494C24159E                       
0x0106000000000009010000004B33537461D33736F1E8D997E1B9B4F8DA77D021                       
0x0106000000000009010000006C60DC9C775C5F2CDAC7BCA40B3CCF1C79E7C544                     
0x01020000000000052000000020020000                                                                           
0x010100000000000512000000                                                                                        
0x0105000000000005150000004D64492ED931F84243170A3268D90200                                    
0x0105000000000005150000004D64492ED931F84243170A326AD90200                                    
0x0105000000000005150000004D64492ED931F84243170A3269D90200                                    
0x010600000000000901000000936D7FE9B077D8DF7C90CCEA54EBC5BAE9BCEB15                      
0xEEF278D0688A214A915574DCDBB8BCE2  
0x75073C675ED083469577A0B0B28D6C01                                                                           

(12개 행 적용됨)


[참고자료]
데이터베이스 소유자 변경
http://msdn.microsoft.com/ko-kr/library/ms190909(SQL.90).aspx

데이터베이스 소유자 변경
http://laigo.kr/104


작성자 : Lai Go / 작성일자 : 2008.12.26

Posted by Lai Go