Tables créées par défaut dans le schéma user

Dans Sql Server 2008, lorsque je crée une table sans préfixe de schéma:

create table mytable ( id int identify ) 

il finit généralement dans le schéma dbo, avec le nom dbo.mytable.

Cependant, sur l'un de nos servers, le tabel finit par m'appartenir:

 andomar.mytable 

Quelle différence de configuration pourrait expliquer cela?

Cela dépend de votre schéma par défaut dans cette database. Même dans SQL Server 2005, si votre schéma par défaut dans cette database est andomar, toutes les tables créées sans schéma explicite finiront par là.

Vérifiez les propriétés de l'user dans cette database (pas les propriétés de connection) et voyez quel est le schéma par défaut.

Si vous ne définissez pas de schéma dans lequel vous créez une table, elle utilisera toujours le schéma par défaut. vous pouvez le créer comme ceci:

 USE DataBaseName -- define database to use GO BEGIN TRAN - if you will have any error everything will roll back CREATE TABLE testovi.razine - schema name is "testovi" and tablename is "razine" ( id INT NOT NULL IDENTITY(1,1), razina NVARCHAR(50) NULL, razinaENG NVARCHAR(50) NULL, kreirao UNIQUEIDENTIFIER NULL, VrijemeKreiranja DATETIME NULL ) ON [PRIMARY] GO 

Lorsque vous créez une table, définissez toujours la contrainte et l'index sur la colonne la plus utilisée pour la transaction

 ALTER TABLE testovi.razine ADD CONSTRAINT PK_mat_razine PRIMARY KEY CLUSTERED (id) WITH(IGNORE_DUP_KEY=OFF, --check duplicate and don't ignore if try to insert one STATISTICS_NORECOMPUTE=OFF, -- important for statistic update and query optimization ALLOW_PAGE_LOCKS=ON) -* I believe that this is default, but always put it to on if not ON [PRIMARY] GO if @@error<>0 BEGIN ROLBACK TRAN END ELSE BEGIN COMMIT TRAN --if everything passed ok table will be created END 

Si vous voulez définir le schéma par défaut, vous devez savoir qu'il s'agit d'un paramètre par défaut basé sur l'user, donc vous pouvez le définir avec du code:

 USE espabiz -- database; ALTER USER YourUserName WITH DERAULT_SCHEMA = SchemaName; -- SchemaName is default schema for defined user 

Ping si vous avez besoin d'aide supplémentaire ou marquez la réponse, vous la trouvez utilisable 🙂