SET ROLE
Changer le rôle actuel.
DSQL.
SET ROLE rolename
Paramètre | Description |
---|---|
rolename |
Le nom du rôle à installer. |
Selon la norme SQL-2008, l’instruction SET ROLE
permet de définir la variable de contexte CURRENT_ROLE
sur l’un des rôles assignés à l’utilisateur CURRENT_USER ou sur le rôle obtenu par authentification de confiance (dans ce cas, l’instruction prend la forme SET TRUSTED ROLE
).
SET ROLE manager;
SELECT current_role FROM rdb$database;
ROLE ======================= MANAGER
SET TRUSTED ROLE
Définir un rôle de confiance.
DSQL
SET TRUSTED ROLE
L’instruction SET TRUSTED ROLE
permet l’accès à un rôle de confiance, à condition que le CURRENT_USER soit obtenu par une authentification de confiance et que le rôle soit disponible.
L’idée derrière la commande distincte SET TRUSTED ROLE
est que lors de la connexion d’un utilisateur de confiance sans spécifier d’informations supplémentaires sur le rôle, SET TRUSTED ROLE
fait du rôle de confiance (s’il y en a un) le rôle courant sans l’activité supplémentaire de définir les paramètres DBP.
Un rôle de confiance n’est pas un type de rôle spécial, il peut être n’importe quel rôle créé avec l’instruction CREATE ROLE
ou le rôle système prédéfini RDB$ADMIN.Il devient un rôle de connexion de confiance lorsque le sous-système de mappage des objets de sécurité fait correspondre le résultat de l’authentification renvoyé par le plugin avec le mappage local ou global de la base de données actuelle.Le rôle peut même être un rôle qui n’est pas explicitement accordé à cet utilisateur de confiance.
Note
|
Le rôle de confiance n’est pas attribué par défaut dans la connexion. Vous pouvez modifier ce comportement en utilisant le plugin d’authentification approprié et les opérateurs |
Un exemple d’utilisation d’un rôle de confiance est l’attribution du rôle système RDB$ADMIN
aux administrateurs Windows lorsque l’authentification Windows de confiance est utilisée.
SET TIME ZONE
Changer le fuseau horaire d’une session.
SET TIME ZONE { <time-zone-string> | LOCAL } <time-zone-string> ::= '<time-zone>' <time-zone> ::= <time-zone-region> | [+/-] <hour-displacement> [: <minute-displacement>]
Change immédiatement le fuseau horaire de la session (la connexion actuelle).
Si vous spécifiez LOCAL, vous reviendrez au fuseau horaire initial de la session (soit celui par défaut, soit celui spécifié dans la propriété de connexion isc_dpb_session_time_zone
).
Vous pouvez obtenir le fuseau horaire actuel de la session en utilisant la fonction RDB$GET_CONTEXT
avec les arguments 'SYSTEM'
pour l’espace de noms et 'SESSION_TIMEZONE'
comme nom de variable.
Note
|
L’exécution de |
set time zone '-02:00';
select rdb$get_context('SYSTEM', 'SESSION_TIMEZONE') from rdb$database;
-- returns -02:00
set time zone 'America/Sao_Paulo';
select rdb$get_context('SYSTEM', 'SESSION_TIMEZONE') from rdb$database;
-- returns America/Sao_Paulo
set time zone local;
ALTER SESSION RESET
Réinitialisation de l’environnement de la session.
DSQL
ALTER SESSION RESET
Réinitialise l’environnement de session (connexions) à l’état initial.Cette fonctionnalité est utile si la session est réutilisée au lieu de se déconnecter/connecter.
Cette déclaration fait ce qui suit :
une erreur (isc_ses_reset_err
) est générée s’il existe une transaction ouverte dans la connexion courante autre que la transaction courante et les transactions 2PC préparées qui sont autorisées et ignorées par cette vérification ;
La variable système RESETTING
est définie à TRUE
;
Les déclencheurs de base de données pour l’événement ON DISCONNECT
sont lancés s’ils sont présents et autorisés pour la connexion actuelle ;
La transaction de l’utilisateur en cours est annulée (ROLLBACK
) si elle est présente. Un avertissement sera émis si des modifications ont été apportées à la transaction actuellement active ;
Remet les paramètres DECFLOAT
(BIND
, TRAP
et ROUND
) aux valeurs par défaut ;
réinitialise les délais d’attente de la session et de l’opérateur à 0 ;
supprime toutes les variables de contexte de l’espace de nom USER_SESSION
;
Réinitialise le rôle à la valeur transmise au DPB (spécifiée lors de la connexion) et efface le cache des préférences (si le rôle a été modifié avec l’instruction SET ROLE) ;
Efface le contenu de toutes les tables globales de niveau connexion utilisées (GLOBAL TEMPORARY TABLE … ON COMMIT PRESERVE ROWS
) ;
déclenche des déclencheurs de base de données sur l’événement ON CONNECT
s’ils sont présents et autorisés pour la connexion actuelle ;
lance une nouvelle transaction avec les mêmes propriétés que la transaction annulée (si la transaction était présente avant la réinitialisation) ;
La variable système RESETTING
a la valeur FALSE
.
Une erreur survenant dans le déclencheur ON DISCONNECT
interrompt la réinitialisation de la session et laisse l’état de la session inchangé.De telles erreurs sont signalées avec le code d’erreur principal isc_session_reset_err
et le texte d’erreur“Canot reset user session”.
Les erreurs survenant après l’exécution des déclencheurs ON DISCONNECT
interrompent l’instruction de réinitialisation de la session et la connexion elle-même.Ces erreurs étaient signalées avec le code d’erreur principal isc_session_reset_failed
et le texte d’erreur“Reset of user session failed. Connection is shut down”.Les opérations de connexion ultérieures (sauf la déconnexion) se termineront par l’erreur isc_att_shutdown
.
SET OPTIMIZE
Changer la stratégie de l’optimiseur.
DSQL
SET OPTIMIZE <optimize-mode> <optimize-mode> ::= FOR {FIRST | ALL} ROWS | TO DEFAULT
L’instruction SET OPTIMIZE
vous permet de changer la stratégie de l’optimiseur au niveau de la session actuelle.
Il existe deux stratégies d’optimisation des requêtes :
FIRST ROWS
- l’optimiseur construit le plan de requête pour récupérer seulement les premières lignes de la requête aussi vite que possible ;
ALL ROWS
- l’optimiseur construit le plan de requête pour récupérer toutes les chaînes de la requête aussi rapidement que possible.
Par défaut, la stratégie d’optimisation spécifiée dans le paramètre OptimizeForFirstRows
du fichier de configuration est utiliséefirebird.conf
ou database.conf
. OptimiseForFirstRows = false
correspond à la stratégie ALL ROWS
,OptimiseForFirstRows = true
correspond à la stratégie First ROWS
.
La stratégie d’optimisation peut être modifiée au niveau de l’instruction SQL à l’aide de la phrase OPTIMIZE FOR
.
SET DEBUG OPTION
Configure les options de débogage.
SET DEBUG OPTION option-name = value
Nom de l’option | Type de valeur | Description |
---|---|---|
DSQL_KEEP_BLR |
BOOLEAN |
Sauvegarde le BLR de l’instruction qui sera récupéré par les fonctions |
L’instruction SET DEBUG OPTION
configure les informations de débogage pour la connexion courante.
Warning
|
Les options de débogage sont étroitement liées aux éléments internes du moteur, et leur utilisation n’est pas recommandée si vous ne comprenez pas comment ces éléments internes peuvent changer d’une version à l’autre. |