Tabela não criada no esquema dbo

15

Ao criar tabelas no SSMS, percebi que se você executar a seguinte instrução:

CREATE TABLE [tableName];

a tabela será criada sob seu próprio esquema (e não no dbo). Portanto, para criá-lo sob o esquema dbo, você precisará dizê-lo explicitamente, assim:

CREATE TABLE [dbo].[tableName];

Alguém sabe de uma maneira (por exemplo, configuração em todo o servidor) para que, quando uma tabela for criada, a parte [dbo] não precise ser especificada?

Chinesinho
fonte
11
Qual versão do servidor SQL?
4
E por que você tem um problema ao especificar explicitamente?
HLGEM

Respostas:

8

O esquema que será usado quando o esquema for omitido será o esquema padrão do usuário do banco de dados. Portanto, para que o dboesquema tenha a tabela criada sem especificar, você deve definir o esquema padrão do usuário do banco de dados como dbo.

Configuração em todo o servidor? Acho que não. Mas você pode escrever uma consulta para converter todos os usuários do banco de dados em um banco de dados específico para o esquema padrão alterado para dbose for o que você escolher.

Thomas Stringer
fonte
@KAJ: SQL2008R2
Chinesinho
11
Mas você não pode definir o esquema padrão para dbo para grupos do Windows ...
Chinesinho
5
@Chinesinho Você não pode definir o esquema padrão de nenhum servidor principal. Você está confundindo logons de servidor e usuários de banco de dados. Os usuários do banco de dados contêm esquemas padrão.
Thomas Stringer
Definir o esquema padrão para usuários mapeados para logins do grupo do Windows não é suportado antes de SQL Server 2012.
DB2
7

Talvez isso possa ajudar

USE [YourDBName]
GO
ALTER USER [YourUserName] WITH DEFAULT_SCHEMA=[dbo]
GO
LazyProgrammer
fonte
3
mas se o usuário está em janelas de autenticação, então ele não pode definir o esquema padrão