2010-02-04 5 views
4

테이블에 사용되는 소유자 접두사를 제어 할 수있는 USE (데이터베이스 전환)와 비슷한 SQL Server가 있습니까?SQL Server 테이블 소유자 - 기본값을 변경하십시오.

예를 들어 우리는 "theServiceAccount.TheTableName"테이블 생성을 고집하는 응용 프로그램을 가지고 있습니다. 우리가 정말로 원하는 것은 dbo ... 테이블 이름을 테이블에 넣는 것입니다. 그래서 "dbo.TheTableName". 우리는 응용 프로그램이 실행되는 SQL을 변경하는 좋은 방법이 없습니다 (SQL이 실행될 수 있도록 시작될 때의 후크가 아닌). 따라서 사용중인 서비스 계정 대신 dbo를 기본으로하는 후속 create table (또는 다른 작업)을 만드는 시점에서 sql을 실행할 수 있다면 좋을 것입니다.

create table 구문을 사용하여 소유자를 지정할 수 있지만이 시점에서는 옵션이 아닌 것 같습니다. 내가 말할 수있는 것부터이 애플리케이션이 생성하는 SQL은 소유자를 지정하지 않는다. 그것은 실행되는 SQL에 테이블 이름 만 갖습니다.

감사합니다.

+2

소유자를 의미 기본 스키마를 변경하여 SSMS를 통해 변경할 수 있습니다, 스키마를 나타냅니다. – Andrew

답변

3

기본적으로 각 사용자는 지정된 경우가 아니면 자신의 기본 스키마를 갖습니다.

이 필요한 일을해야합니다

USE databasename 
ALTER USER theServiceAccount WITH DEFAULT_SCHEMA = dbo 

또한 사용자 속성을보고 더 이상 앞에 SQL 2005의 경우

+0

그 트릭을 했어! – TheToasterThatCould

0

나는 사용자를 만들 수 있습니다 귀하의 예에서

을 (http://msdn.microsoft.com/en-us/library/ms181362.aspx 참조)는 EXECUTE AS 문을 사용하여 다음 원하는 기본 스키마와 사용자를 생성하고이 작업을 수행 할 수 있습니다 생각 (또는 DBO를 사용, 권장하지 않음) dbo로 설정된 기본 스키마가있는 'specialDBO'라고합니다.

 USE [myfabdb]; 
    EXECUTE AS USER = 'speicalDBO'; 

    ... blah blah blah... 

    REVERT; 

당신이 EXECUTE AS 문 후 USE 문을 가질 수 없습니다 기억 : 그럼 당신은 이런 식으로 뭔가가있다.

관련 문제