2010-02-23 2 views
2

공용 서버에서 백업 된 MS SQL 2000 데이터베이스가 있고 업그레이드 테스트를 위해 테스트 위치에 복원되었습니다. 문제는 공용 서버에 대한 액세스 권한이있는 사용자가 테스트 서버에 존재하지 않으며 모든 테이블에 해당 사용자 이름이 접두어로 붙습니다 (변경하려는 테이블에 대한 모든 쿼리가 필요하다는 것입니다).이전 소유자의 MS SQL 데이터베이스 테이블 접두어

이 문제를 신속하게 해결할 수 있습니까? 데이터베이스 소유자를 변경했지만 도움이되지 않았습니다.

답변

1

USER 만들 수 없습니다 - OBJECT 소유자는 DBO로 변경해야합니다. SQL 스크립트/쿼리에서 개체에 대한 접두어를 붙이지 않아도됩니다.이 경우 개체는 데이터베이스 테이블입니다.

다음은 해당 개체의 소유자를 변경하는 스크립트입니다. 데이터베이스 내 개체 (내 코드 아님)

DECLARE @currentObject nvarchar(517) 
DECLARE @qualifiedObject nvarchar(517) 
DECLARE @currentOwner varchar(50) 
DECLARE @newOwner varchar(50) 

SET @currentOwner = 'old_owner' 
SET @newOwner = 'dbo' 

DECLARE alterOwnerCursor CURSOR FOR 
SELECT [name] FROM dbo.sysobjects 
WHERE xtype = 'U' or xtype = 'P' 
AND LEFT([name], 2) <> 'dt' 
OPEN alterOwnerCursor 
FETCH NEXT FROM alterOwnerCursor INTO @currentObject 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @qualifiedObject = CAST(@currentOwner as varchar) + '.' + CAST(@currentObject as varchar) 
    EXEC sp_changeobjectowner @qualifiedObject, @newOwner 
    FETCH NEXT FROM alterOwnerCursor INTO @currentObject 
END 
CLOSE alterOwnerCursor 
DEALLOCATE alterOwnerCursor 
+0

질문을 읽었습니까? 여전히 스키마 참조 – gbn

+2

"질문 읽기"를 사용하는 쿼리를 모두 변경한다는 의미입니까? 그는 그것을 물었다! – bart

+0

@ bart : 전화하세요. oops – gbn

1

로그인 및 사용자를 만들지 만의 sysusers에서 SID를 찾아

EXEC sp_addlogin 'TheLogin', 'ThePassword', @sid = ??? 
EXEC sp_adduser 'TheLogin','TheUser' 

참고 : SQL Server 2000에서 그렇게을 만들어보세요 로그인 사용하거나 좋아, 답을 발견