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?


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.


@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

3
mas se o usuário está em janelas de autenticação, então ele não pode definir o esquema padrão
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.