DB 이전을 하다보면 소유자명 때문에 골치 아플때가 있죠?
예를 들어 이런거죠..
select * from table 이렇게 쓰면 되는데..
이게 DB이전에서 소유자때문에..
select * from user.table 이렇게 바꿔서 써야하는,....덜덜
아 피곤합니다 이걸 일일이 소스에서 다 바꿀수도 없고..
그렇다고 DB에서 소유자 명을 바꾸자니..한두개도 아니고..
우선 하나씩 바꾸는법..이건 간단합니다.
sp_changeobjectowner 'user1.tablename','user2'
이렇게 쓰면 되는데 앞에 user1 이 원래 소유자명 뒤 user2가 바꿀 소유자명입니다.
근데 이러면 문제가 하나씩 바꿔줘야 한다는거죠 이러면 오래 걸리죠..
그래서 한번에 바꾸는걸 찾다가 발견!!
CREATE PROCEDURE [dbo].[usp_ChangeAllObjOwner] ( @oldowner sysname, --원래 소유자 @newowner sysname, --바꿀 소유자 @type sysname --타입 U:테이블 P:프로시져 V:뷰 ) AS DECLARE @objname sysname SET NOCOUNT ON IF USER_ID(@oldowner) IS NULL BEGIN RAISERROR ('@oldowner 소유자는 데이터베이스에 존재하지 않습니다.', 16, 1) RETURN END IF USER_ID(@newowner) IS NULL BEGIN RAISERROR ('@newowner소유자는 데이터베이스에 존재하지 않습니다.', 16, 1) RETURN END DECLARE cur_ChangeAllObjOwner CURSOR FOR SELECT name FROM sysobjects WHERE uid = USER_ID(@oldowner) and xtype=@type OPEN cur_ChangeAllObjOwner FETCH NEXT FROM cur_ChangeAllObjOwner INTO @objname WHILE (@@fetch_status = 0) BEGIN SET @objname = @oldowner + '.' + @objname EXEC sp_changeobjectowner @objname, @newowner FETCH NEXT FROM cur_ChangeAllObjOwner INTO @objname END CLOSE cur_ChangeAllObjOwner DEALLOCATE cur_ChangeAllObjOwner
우선 이 프로시져를 생성하고 실행하면 됩니다.
실행 방법은?
EXEC usp_ChangeAllObjOwner 'orname','newname','U'
이렇게 첫번째 원래 소유자,두번째 바꿀소유자,세번째 타입 이렇게 쓰면 됩니다.
끝~~~
출처 : http://cafe.naver.com/ilovedata.cafe?iframe_url=/ArticleRead.nhn?articleid=284&
제가 이미지 업로드 하면 파일 타입으 ... |
감사합니다 |
참고하시라고 적어봅니다. 저는 위에 ... |
asp용 소스 부탁드립니다. 외부가 아닌 ... |
특정일 선택막기에서 for문이랑 if($. ... |
워드프레스를 시작한지 어언 6일... ... |
이미지 사이즈가 계속 0으로 나와서 애 ... |
감사합니다! |
음.. 메일로 보내 드릴게요 |
Comment Write
Comment List