2010-02-19 4 views

Répondre

9

Si vous ne spécifiez pas de schéma explicitement sur le nom de votre table à créer, il sera créé dans le schéma par défaut actuel de l'utilisateur. Je parie que l'utilisateur que vous utilisez a son propre schéma personnel comme schéma par défaut - c'est pourquoi vos tables sont créées dans son propre schéma personnel.

Vous pouvez vérifier ce que les utilisateurs base de données que vous avez et ce que leur schéma par défaut est en inspectant sys.database_principals (SQL Server 2005 et plus):

SELECT name, type_desc, default_schema_name 
FROM sys.database_principals 

Pour résoudre ceci:

  • préciser le schéma vous voulez utiliser explicitement (meilleure pratique de toute façon!)

    CREATE TABLE dbo.T_TableName 
    
  • changement de schéma par défaut de l'utilisateur à dbo

    ALTER USER [Domain\YourUser] WITH DEFAULT_SCHEMA = dbo 
    

Mais en règle générale, je recommande d'utiliser toujours le « dbo. » préfixe explicitement, si vous voulez avoir tous vos objets de base de données dans le schéma dbo. Cela aide aussi à la performance (un peu moins) puisque SQL Server n'aura pas besoin d'aller chercher dans des schémas différents, si vous lui dites explicitement où vivent vos objets db.

3

Appelez-le dbo.T_TableName dans SSMS. Si vous avez les permissions correctes, cela fonctionnera.

1

Etes-vous affecté comme db_owner pour la base de données dans laquelle vous avez créé la table? Sinon, cela pourrait être le problème. Essayez d'ajouter vos autorisations de mappage utilisateur à la base de données en tant que telle.

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

Vous devez soit créer votre table « dbo.Whatever », ou si vous devez modifier votre schéma par défaut (ou que votre SA faire pour vous) en lançant une commande comme:

ALTER USER [DOMAINNAME\UserName] WITH DEFAULT_SCHEMA = dbo; 
Questions connexes