

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Gestione del comportamento dell’istruzione DDL in base allo schema predefinito o esplicito
<a name="babelfish-kerberos-securityad-ddl"></a>

 Quando si utilizza una sessione autenticata da AD, lo schema predefinito per la sessione corrente è determinato dalle seguenti condizioni: 
+ Se esiste un singolo utente del database, lo schema predefinito dell’utente viene considerato lo schema predefinito della sessione corrente.
+ Se esiste lo schema predefinito per un utente del database di gruppo, lo schema predefinito dell’utente del database di gruppo viene considerato lo schema predefinito della sessione corrente con l’ID principale più piccolo.

## Informazioni sul comportamento dell’istruzione CREATE DDL
<a name="babelfish-kerberos-securityad-ddlcreate"></a>

 Se non è specificato uno schema esplicito nell’istruzione CREATE DDL, la creazione dell’oggetto avviene nello schema predefinito della sessione corrente. Se non è possibile determinare se lo schema è predefinito o esplicito, l’istruzione DDL genererà il seguente errore: 

```
"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."
```

**Example : lo schema predefinito non esiste per gli utenti del gruppo Windows**  
L’utente del gruppo Windows [corp\$1accounts-group] ha uno schema predefinito NULL e l’utente AD user1 sta tentando di eseguire l’istruzione DDL senza specificare lo schema in modo esplicito. Poiché l’accesso e l’utente Windows individuali non esistono per user1, otterrà i privilegi a livello di database solo dell’utente del gruppo Windows [corp\$1accounts-group].  

```
1> create TABLE t2(a int);
2> GO

Msg 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.
```
L’accesso e l’utente Windows individuali non esistono per l’utente AD user1

**Example : esiste uno schema predefinito per gli utenti del gruppo Windows**  
Creare un utente del gruppo Windows per l’accesso [corp\$1accounts-group] con lo schema predefinito utilizzando sysadmin.   

```
1> CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group] WITH DEFAULT_SCHEMA = sch_acc;
2> GO
1> CREATE SCHEMA sch_acc AUTHORIZATION [gad\accounts-group];
2> GO
1> SELECT name, principal_id, default_schema_name FROM sys.database_principals WHERE name = 'corp\accounts-group';
2> GO
                
name               principal_id default_schema_name
------------------ ------------ -------------------
corp\accounts-group 24162        sch_acc

(1 rows affected)
```
 Provare a creare un oggetto senza specificare lo schema in modo esplicito utilizzando l’utente AD user1. La tabella t2 verrà creata nello schema predefinito dell’utente del gruppo Windows [corp\$1accounts-group]. Il proprietario di questo oggetto sarà lo stesso del proprietario dello schema sch\$1acc.   

```
1> CREATE TABLE t_group(a int);
2> GO
1> SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't_group';
2> GO

name    schema_name
------- -----------
t_group sch_acc

(1 rows affected)
```
L’accesso e l’utente Windows individuali non esistono per l’utente AD user1

**Example : esiste anche un singolo utente del database per un utente AD**  
 Se esiste anche un singolo utente del database per un utente AD, gli oggetti verranno sempre creati nello schema associato al singolo utente del database. Se lo schema non esiste per l’utente del database, verrà utilizzato lo schema dbo. Creare un singolo accesso Windows e utente del database per l’utente AD user1. Eseguire la connessione tramite l’endpoint TDS utilizzando un accesso sysadmin.   

```
1> CREATE LOGIN [corp\user1] FROM WINDOWS;
2> GO
1> CREATE USER [corp\user1] FOR LOGIN [corp\user1] WITH DEFAULT_SCHEMA = sch1;
2> GO
1> CREATE SCHEMA sch1 AUTHORIZATION [corp\user1];
2> GO
1> SELECT name, default_schema_name FROM sys.database_principals WHERE name = 'corp\user1';
2> GO

name      default_schema_name
--------- -------------------
corp\user1 sch1

(1 rows affected)
```
 Eseguire la connessione utilizzando l’utente AD user1 e prova a creare un oggetto senza specificare lo schema in modo esplicito. La tabella t2 verrà creata nello schema sch1. Il proprietario di questo oggetto sarà lo stesso del proprietario dello schema sch1.   

```
1> CREATE TABLE t2(a int);
2> GO
1> SELECT name, schema_name(schema_id) FROM sys.objects WHERE name like 't2';
2> GO
            
name schema_name
---- -----------
t2   sch1

(1 rows affected)
```