O esquema padrão do SQL Server 2008 não está sendo respeitado?

9

Acabamos de copiar um banco de dados do SQL 2008 para outro servidor, para fins de teste. O usuário típico que efetua login usa alguns objetos em um determinado esquema. Digamos que seja usuário foo e esquema bar .

O esquema padrão de

foo é bar no nível da instância e do banco de dados. No entanto, quando foo efetuar login, não poderá encontrar nenhum objeto no esquema bar sem usar um nome totalmente qualificado.

Por que o esquema padrão não funciona aqui?

    
por John Cromartie 18.11.2010 / 19:35

3 respostas

13

Tem direitos de foo sysadmin de usuário no SQL Server? Como isso acontece, qualquer usuário do sysadmin terá, por padrão, o esquema dbo , independentemente do que estiver definido nas propriedades do usuário para um banco de dados específico.

Portanto, para ter um esquema padrão, um usuário precisa ter funções de banco de dados, como db_owner, db_datawriter e assim por diante, em vez da função de servidor sysadmin.

Diga-me se não é o seu caso.

    
por 19.11.2010 / 11:23
1

Outro cenário em que esse problema pode ocorrer (SQL 2008 R2) ...

Eu tinha um usuário vinculado a um login de autenticação do SQL, que eu estava tentando associar a um esquema existente. O login não tinha direitos sysadmin , então a solução acima não ajudou.

Eu acabei descobrindo que o banco de dados ainda estava configurado no modo de compatibilidade do SQL 2000. A mudança para o SQL 2005 resolveu o problema.

    
por 19.12.2011 / 16:02
0

Assumirá que o esquema padrão no novo servidor é dbo; Se o esquema não foi copiado com o banco de dados.

Não é a solução, mas talvez isso possa ajudar, dando uma olhada no artigo do msdn. link

    
por 18.11.2010 / 19:42