Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Traitement du comportement des instructions DDL sur la base d’un schéma par défaut ou explicite
Lorsque vous utilisez une session authentifiée AD, le schéma par défaut de la session en cours est déterminé par les conditions suivantes :
-
S’il existe un utilisateur de base de données individuel, le schéma par défaut de cet utilisateur est considéré comme le schéma par défaut de la session en cours.
-
S’il existe le schéma par défaut pour un utilisateur de base de données de groupe, le schéma par défaut de cet utilisateur est considéré comme le schéma par défaut de la session en cours avec l’identifiant de principal le plus faible.
Comprendre le comportement de l’instruction CREATE DDL
Si aucun schéma explicite n’est spécifié dans l’instruction CREATE DDL, la création de l’objet aura lieu dans le schéma par défaut de la session en cours. S’il est impossible de déterminer si le schéma est le schéma par défaut ou explicite, l’instruction DDL génère l’erreur suivante :
"Babelfish Unsupported Command : Schema required for CREATE DDLs when connecting with Active Directory Group authentication. Assign default schema to group user or specify schema in command."
Exemple: il n’existe pas de schéma par défaut pour l’utilisateur du groupe Windows
L’utilisateur du groupe Windows [corp\accounts-group] a un schéma par défaut NULL, et l’utilisateur AD user1 essaie d’exécuter le DDL sans spécifier le schéma explicitement. Étant donné qu’il n’existe pas d’identifiant ni d’utilisateur Windows individuel pour user1, il obtiendra uniquement les privilèges de l’utilisateur du groupe Windows [corp\accounts-group] au niveau de la base de données.
1>create TABLE t2(a int);2>GOMsg 33557097, Level 16, State 1, Server db-inst, Line 1 Babelfish Unsupported Command : Schema required for CREATE DDLs when connecting with Active Directory Group authentication. Assign default schema to group user or specify schema in command.
Note
Il n’existe pas d’identifiant ni d’utilisateur Windows individuel pour l’utilisateur AD user1
Exemple: il existe un schéma par défaut pour les utilisateurs du groupe Windows
Créez un utilisateur de groupe Windows pour l’identifiant [corp\accounts-group] avec le schéma par défaut à l’aide de sysadmin.
1>CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group] WITH DEFAULT_SCHEMA = sch_acc;2>GO1>CREATE SCHEMA sch_acc AUTHORIZATION [gad\accounts-group];2>GO1>SELECT name, principal_id, default_schema_name FROM sys.database_principals WHERE name = 'corp\accounts-group';2>GOname principal_id default_schema_name ------------------ ------------ ------------------- corp\accounts-group 24162 sch_acc (1 rows affected)
Essayez de créer un objet sans spécifier explicitement le schéma à l’aide de l’utilisateur AD user1. La table t2 sera créée dans le schéma par défaut de l’utilisateur du groupe Windows [corp\accounts-group]. Le propriétaire de cet objet sera le même que le propriétaire du schéma sch_acc.
1>CREATE TABLE t_group(a int);2>GO1>SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't_group';2>GOname schema_name ------- ----------- t_group sch_acc (1 rows affected)
Note
Il n’existe pas d’identifiant ni d’utilisateur Windows individuel pour l’utilisateur AD user1
Exemple: il existe également un utilisateur de base de données individuel pour un utilisateur AD
S’il existe également un utilisateur de base de données individuel pour un utilisateur AD, les objets seront toujours créés dans le schéma associé à cet utilisateur. S’il n’existe pas de schéma pour l’utilisateur de base de données, le schéma dbo sera utilisé. Créez un identifiant et un utilisateur de base de données Windows individuels pour l’utilisateur AD user1. Connectez-vous via le point de terminaison TDS à l’aide d’un identifiant sysadmin.
1>CREATE LOGIN [corp\user1] FROM WINDOWS;2>GO1>CREATE USER [corp\user1] FOR LOGIN [corp\user1] WITH DEFAULT_SCHEMA = sch1;2>GO1>CREATE SCHEMA sch1 AUTHORIZATION [corp\user1];2>GO1>SELECT name, default_schema_name FROM sys.database_principals WHERE name = 'corp\user1';2>GOname default_schema_name --------- ------------------- corp\user1 sch1 (1 rows affected)
Connectez-vous à l’aide de l’utilisateur AD user1 et essayez de créer un objet sans spécifier explicitement le schéma. La table t2 sera créée dans le schéma sch1. Notez également que le propriétaire de cet objet sera le même que le propriétaire du schéma sch1.
1>CREATE TABLE t2(a int);2>GO1>SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't2';2>GOname schema_name ---- ----------- t2 sch1 (1 rows affected)