2010-02-19 12 views

Respuesta

9

Si no especifica un esquema explícitamente en el nombre de la tabla que se creará, se creará en el esquema predeterminado actual del usuario.

Apuesto a que el usuario que está utilizando tiene su propio esquema de esquema personal, es por eso que las tablas se crean en su propio esquema personal.

Puede comprobar lo que los usuarios de bases de datos que tiene y cuál es su esquema por omisión es mediante la inspección de sys.database_principals (SQL Server 2005 en adelante):

SELECT name, type_desc, default_schema_name 
FROM sys.database_principals 

Para resolver esto:

  • especificar el esquema desea utilizar explícitamente (la mejor práctica de todos modos!)

    CREATE TABLE dbo.T_TableName 
    
  • cambio de esquema predeterminado del usuario a dbo

    ALTER USER [Domain\YourUser] WITH DEFAULT_SCHEMA = dbo 
    

Sin embargo, como regla general, yo siempre recomiendo usar el "dbo". prefijo explícitamente, si desea tener todos sus objetos de base de datos en el esquema dbo. También ayuda con el rendimiento (muy levemente) ya que SQL Server no tendrá que buscar en diferentes esquemas, si le dices explícitamente dónde viven sus objetos db.

3

Llámalo dbo.T_TableName en SSMS. Si tiene los permisos correctos, funcionará.

1

¿Está asignado como db_owner para la base de datos en la que creó la tabla? Si no, este podría ser el problema. Intente agregar sus permisos de mapeo de usuario a la base de datos como tal.

USE [yourDatabase] 
GO 
EXEC sp_addrolemember N'db_owner', N'DOMAIN\UserOrGroup' 
GO 
4

Necesitas o bien crear su tabla como "dbo.Whatever", o si tiene que cambiar su esquema predeterminado (o tiene su SA lo haga por usted) mediante la emisión de una orden como:

ALTER USER [DOMAINNAME\UserName] WITH DEFAULT_SCHEMA = dbo; 
Cuestiones relacionadas