티스토리 툴바


'2010/05/17'에 해당되는 글 1건

  1. 2010/05/17 MS-SQL에서 사용자 권한 바꾸기
Develop/DATABASE2010/05/17 15:58

DB를 사용하다 보면 DBO가 아닌 관리자 기능을 가진 사용자에게 권한이 부여된채 관리자는 접근이
되지않는 DB가 가끔 존재한다  테이블 하나씩 바꾸자면 시간이 많이 걸리므로 일괄적으로 수정하는 방법이 필요하다 . 여기선 유저 계정으로 생성된 테이블들을 DBO로 수정하는 방법을 설명한다

1. sysobjects 테이블을 직접수정하는 방법

 
  EXEC sp_configure N'allow updates', 1
  RECONFIGURE WITH OVERRIDE

   -- 실행한 뒤  해당 DB 에서 sysobjects 테이블 에  uid 필드의 내용이 1 이 아닌것을 찾음
   SELECT name,uid FROM sysobjects WHERE uid <> '1'

   -- 1 이 아닌것을 발견했다면 그부분의 소유권때문에 발생한 문제이므로 숫자를 1 바꿈
       (소유권을 dbo 로 넘겨버림)
   UPDATE sysobjects SET uid = '1' WHERE uid='6'

  -- 원래대로 다시 돌려놓음
   EXEC sp_configure N'allow updates', 0


2.  커서를 이용한 방법

 DECLARE @TABLE_NAME VARCHAR (50)
DECLARE @TABLE_OWNER VARCHAR (50)
DECLARE TCURSOR CURSOR

  --커서 정의
  FOR SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES
  WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME <> 'dtproperties'
  FOR READ ONLY

  --커서 오픈후 루프 
  OPEN TCURSOR FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER
  WHILE @@FETCH_STATUS = 0
   BEGIN
          EXEC ('SP_CHANGEOBJECTOWNER ''[' + @TABLE_OWNER + '].
                                                                 [' + @TABLE_NAME + ']'',  ''dbo''')
          FETCH NEXT FROM TCURSOR INTO @TABLE_NAME, @TABLE_OWNER
    END

--커서 종료
CLOSE TCURSOR
DEALLOCATE TCURSOR


'Develop > DATABASE' 카테고리의 다른 글

MS-SQL에서 사용자 권한 바꾸기  (0) 2010/05/17
Posted by 쮠이