OVH Cloud OVH Cloud

Déconnexion forcée d'utilisateurs non administrateurs

6 réponses
Avatar
Sebastien
Bonjour,

Dans un traitement, j'aimerai pouvoir forcer la déconnexion de tous les
utilisateurs connectés à une base, sauf ceux qui font partie du groupe des
administrateurs.
J'ai essayé cette requète
ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
Elle passe bien la base en dbo_only en arrêtant les connexions des
utilisateurs non administrateurs, mais aussi celles des administrateurs
(même sa) !!!

Est-ce normal ?
Y a t'il une autre solution plus ou moins simple ?

Merci d'avance

Sébastien

6 réponses

Avatar
Med Bouchenafa[MVP]
Normalement avec cette option, tous les membres des rôles db_owner,
dbcreator, ou sysadmin peuvent utiliser la base de données.
Quel est le message d'erreur obtenu ?

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Sebastien" wrote in message
news:#$
Bonjour,

Dans un traitement, j'aimerai pouvoir forcer la déconnexion de tous les
utilisateurs connectés à une base, sauf ceux qui font partie du groupe des
administrateurs.
J'ai essayé cette requète
ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
Elle passe bien la base en dbo_only en arrêtant les connexions des
utilisateurs non administrateurs, mais aussi celles des administrateurs
(même sa) !!!

Est-ce normal ?
Y a t'il une autre solution plus ou moins simple ?

Merci d'avance

Sébastien




Avatar
Sebastien
Sous isqlw, je récupère que ce message

[Microsoft][ODBC SQL Server Driver]Une erreur non spécifiée s'est produite
sur SQL Server.
Il est possible que la connexion ait été interrompue par le serveur.
Connexion interrompue

Ce message est le même que je sois ou non connecté sa.
Ensuite, si je suis connecté sa, je peux bien sûr relancer des accès sur la
base. Mais au moment ou passe l'Alter database, tout ce qui est en cours
semble stoppé sans distinction du rôle de l'utilisateur.

"Med Bouchenafa[MVP]" a écrit dans le message de
news:eDtYBU%
Normalement avec cette option, tous les membres des rôles db_owner,
dbcreator, ou sysadmin peuvent utiliser la base de données.
Quel est le message d'erreur obtenu ?

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Sebastien" wrote in message
news:#$
> Bonjour,
>
> Dans un traitement, j'aimerai pouvoir forcer la déconnexion de tous les
> utilisateurs connectés à une base, sauf ceux qui font partie du groupe


des
> administrateurs.
> J'ai essayé cette requète
> ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
> Elle passe bien la base en dbo_only en arrêtant les connexions des
> utilisateurs non administrateurs, mais aussi celles des administrateurs
> (même sa) !!!
>
> Est-ce normal ?
> Y a t'il une autre solution plus ou moins simple ?
>
> Merci d'avance
>
> Sébastien
>
>




Avatar
Med Bouchenafa[MVP]
Ce message n'est pas celui attendu lorsque l'on se connecte et que l'on a le
droit d'accès à la base
C'est peut-être un autre problème qui n'a rien à voir avec le fait que la
base passe en mode de restriction
J'avoue aussi ne pas bien comprendre la manip que tu fais.
Regarde dans le journal des erreurs de SQL/Server (errorlog), tu pourras
peut-être trouver quelque chose qui te mettra sur la piste

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Sebastien" wrote in message
news:uKlY7s#
Sous isqlw, je récupère que ce message

[Microsoft][ODBC SQL Server Driver]Une erreur non spécifiée s'est produite
sur SQL Server.
Il est possible que la connexion ait été interrompue par le serveur.
Connexion interrompue

Ce message est le même que je sois ou non connecté sa.
Ensuite, si je suis connecté sa, je peux bien sûr relancer des accès sur


la
base. Mais au moment ou passe l'Alter database, tout ce qui est en cours
semble stoppé sans distinction du rôle de l'utilisateur.

"Med Bouchenafa[MVP]" a écrit dans le message de
news:eDtYBU%
> Normalement avec cette option, tous les membres des rôles db_owner,
> dbcreator, ou sysadmin peuvent utiliser la base de données.
> Quel est le message d'erreur obtenu ?
>
> --
> Bien cordialement
> Med Bouchenafa
> TETRASET
> 75015 Paris
>
> "Sebastien" wrote in message
> news:#$
> > Bonjour,
> >
> > Dans un traitement, j'aimerai pouvoir forcer la déconnexion de tous


les
> > utilisateurs connectés à une base, sauf ceux qui font partie du groupe
des
> > administrateurs.
> > J'ai essayé cette requète
> > ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
> > Elle passe bien la base en dbo_only en arrêtant les connexions des
> > utilisateurs non administrateurs, mais aussi celles des


administrateurs
> > (même sa) !!!
> >
> > Est-ce normal ?
> > Y a t'il une autre solution plus ou moins simple ?
> >
> > Merci d'avance
> >
> > Sébastien
> >
> >
>
>




Avatar
Sebastien
Prenons l'exemple suivant :
Sur une 1ère connexion connectée sa, j'exécute une requete assez longue, du
genre select * from unegrossetable
Si sur une 2ème connexion sa, j'exécute le fameux Alter database, ca va
shooter immédiatement la 1ère avec le message indiqué précédemment, ce qui
ne devrait pas arriver puisque le sa reste autorisé sur la base.
Ca m'a l'air bien lié à ce passage en mode restriction. Et rien dans les
logs SQL.

Ce que je voudrais faire en fait:
J'ai des traitements de mises à jour de tables à faire en nocturne
(chargement bcp notamment, sauvegarde, etc).
Je voudrais en démarrant ceux-ci être sûr qu'aucun traitement d'utilisateur
que je ne maitrise pas soit en cours d'utilisation car il est déjà arrivé
que de simples consultations de tables laissés en marche le soir (avec
Microsoft Access ou Microsoft Query) bloquent certaines des mise-à-jour de
ces traitements. Mais je ne veux pas interrompre d'autres traitements
d'aministration qui pourraient être déjà en cours. C'est pourquoi je me suis
tourné vers cette instruction de restriction autorisant uniquement les
administrateurs, mais elle semble détruire également les connexions
courantes d'aministration.

Voilà tout mon problème.
Sébastien

"Med Bouchenafa[MVP]" a écrit dans le message de
news:eG$sRl$
Ce message n'est pas celui attendu lorsque l'on se connecte et que l'on a


le
droit d'accès à la base
C'est peut-être un autre problème qui n'a rien à voir avec le fait que la
base passe en mode de restriction
J'avoue aussi ne pas bien comprendre la manip que tu fais.
Regarde dans le journal des erreurs de SQL/Server (errorlog), tu pourras
peut-être trouver quelque chose qui te mettra sur la piste

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Sebastien" wrote in message
news:uKlY7s#
> Sous isqlw, je récupère que ce message
>
> [Microsoft][ODBC SQL Server Driver]Une erreur non spécifiée s'est


produite
> sur SQL Server.
> Il est possible que la connexion ait été interrompue par le serveur.
> Connexion interrompue
>
> Ce message est le même que je sois ou non connecté sa.
> Ensuite, si je suis connecté sa, je peux bien sûr relancer des accès sur
la
> base. Mais au moment ou passe l'Alter database, tout ce qui est en cours
> semble stoppé sans distinction du rôle de l'utilisateur.
>
> "Med Bouchenafa[MVP]" a écrit dans le message


de
> news:eDtYBU%
> > Normalement avec cette option, tous les membres des rôles db_owner,
> > dbcreator, ou sysadmin peuvent utiliser la base de données.
> > Quel est le message d'erreur obtenu ?
> >
> > --
> > Bien cordialement
> > Med Bouchenafa
> > TETRASET
> > 75015 Paris
> >
> > "Sebastien" wrote in message
> > news:#$
> > > Bonjour,
> > >
> > > Dans un traitement, j'aimerai pouvoir forcer la déconnexion de tous
les
> > > utilisateurs connectés à une base, sauf ceux qui font partie du


groupe
> des
> > > administrateurs.
> > > J'ai essayé cette requète
> > > ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
> > > Elle passe bien la base en dbo_only en arrêtant les connexions des
> > > utilisateurs non administrateurs, mais aussi celles des
administrateurs
> > > (même sa) !!!
> > >
> > > Est-ce normal ?
> > > Y a t'il une autre solution plus ou moins simple ?
> > >
> > > Merci d'avance
> > >
> > > Sébastien


Avatar
Med Bouchenafa[MVP]
Je ne sais pas et je n'avais jamais réellement fait attention à ce fait.
Une façon de contourner le problème est de lister tous les process
utilisateurs

SELECT spid FROM master..sysprocesses
WHERE spid > 50 AND dbid= db_id('NomBaseDonnées')
AND Loginame not in ('sa', etc...)

Il suffit alors de faire un KILL de tous ces process.

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Sebastien" wrote in message
news:
Prenons l'exemple suivant :
Sur une 1ère connexion connectée sa, j'exécute une requete assez longue,


du
genre select * from unegrossetable
Si sur une 2ème connexion sa, j'exécute le fameux Alter database, ca va
shooter immédiatement la 1ère avec le message indiqué précédemment, ce qui
ne devrait pas arriver puisque le sa reste autorisé sur la base.
Ca m'a l'air bien lié à ce passage en mode restriction. Et rien dans les
logs SQL.

Ce que je voudrais faire en fait:
J'ai des traitements de mises à jour de tables à faire en nocturne
(chargement bcp notamment, sauvegarde, etc).
Je voudrais en démarrant ceux-ci être sûr qu'aucun traitement


d'utilisateur
que je ne maitrise pas soit en cours d'utilisation car il est déjà arrivé
que de simples consultations de tables laissés en marche le soir (avec
Microsoft Access ou Microsoft Query) bloquent certaines des mise-à-jour de
ces traitements. Mais je ne veux pas interrompre d'autres traitements
d'aministration qui pourraient être déjà en cours. C'est pourquoi je me


suis
tourné vers cette instruction de restriction autorisant uniquement les
administrateurs, mais elle semble détruire également les connexions
courantes d'aministration.

Voilà tout mon problème.
Sébastien

"Med Bouchenafa[MVP]" a écrit dans le message de
news:eG$sRl$
> Ce message n'est pas celui attendu lorsque l'on se connecte et que l'on


a
le
> droit d'accès à la base
> C'est peut-être un autre problème qui n'a rien à voir avec le fait que


la
> base passe en mode de restriction
> J'avoue aussi ne pas bien comprendre la manip que tu fais.
> Regarde dans le journal des erreurs de SQL/Server (errorlog), tu pourras
> peut-être trouver quelque chose qui te mettra sur la piste
>
> --
> Bien cordialement
> Med Bouchenafa
> TETRASET
> 75015 Paris
>
> "Sebastien" wrote in message
> news:uKlY7s#
> > Sous isqlw, je récupère que ce message
> >
> > [Microsoft][ODBC SQL Server Driver]Une erreur non spécifiée s'est
produite
> > sur SQL Server.
> > Il est possible que la connexion ait été interrompue par le serveur.
> > Connexion interrompue
> >
> > Ce message est le même que je sois ou non connecté sa.
> > Ensuite, si je suis connecté sa, je peux bien sûr relancer des accès


sur
> la
> > base. Mais au moment ou passe l'Alter database, tout ce qui est en


cours
> > semble stoppé sans distinction du rôle de l'utilisateur.
> >
> > "Med Bouchenafa[MVP]" a écrit dans le


message
de
> > news:eDtYBU%
> > > Normalement avec cette option, tous les membres des rôles db_owner,
> > > dbcreator, ou sysadmin peuvent utiliser la base de données.
> > > Quel est le message d'erreur obtenu ?
> > >
> > > --
> > > Bien cordialement
> > > Med Bouchenafa
> > > TETRASET
> > > 75015 Paris
> > >
> > > "Sebastien" wrote in message
> > > news:#$
> > > > Bonjour,
> > > >
> > > > Dans un traitement, j'aimerai pouvoir forcer la déconnexion de


tous
> les
> > > > utilisateurs connectés à une base, sauf ceux qui font partie du
groupe
> > des
> > > > administrateurs.
> > > > J'ai essayé cette requète
> > > > ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
> > > > Elle passe bien la base en dbo_only en arrêtant les connexions des
> > > > utilisateurs non administrateurs, mais aussi celles des
> administrateurs
> > > > (même sa) !!!
> > > >
> > > > Est-ce normal ?
> > > > Y a t'il une autre solution plus ou moins simple ?
> > > >
> > > > Merci d'avance
> > > >
> > > > Sébastien






Avatar
Sebastien
J'avais pensé également à ce genre de solution de contournement, mais pas
encore cherché à la mettre en oeuvre.
C'est quand même dommage d'avoir à sa disposition une fonction toute faite
qui sur le papier fait exactement ce que l'on veut mais qui en réalité ne
marche pas correctement.

Merci pour ton aide.
Sébastien.

"Med Bouchenafa[MVP]" a écrit dans le message de
news:
Je ne sais pas et je n'avais jamais réellement fait attention à ce fait.
Une façon de contourner le problème est de lister tous les process
utilisateurs

SELECT spid FROM master..sysprocesses
WHERE spid > 50 AND dbid= db_id('NomBaseDonnées')
AND Loginame not in ('sa', etc...)

Il suffit alors de faire un KILL de tous ces process.

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris

"Sebastien" wrote in message
news:
> Prenons l'exemple suivant :
> Sur une 1ère connexion connectée sa, j'exécute une requete assez longue,
du
> genre select * from unegrossetable
> Si sur une 2ème connexion sa, j'exécute le fameux Alter database, ca va
> shooter immédiatement la 1ère avec le message indiqué précédemment, ce


qui
> ne devrait pas arriver puisque le sa reste autorisé sur la base.
> Ca m'a l'air bien lié à ce passage en mode restriction. Et rien dans les
> logs SQL.
>
> Ce que je voudrais faire en fait:
> J'ai des traitements de mises à jour de tables à faire en nocturne
> (chargement bcp notamment, sauvegarde, etc).
> Je voudrais en démarrant ceux-ci être sûr qu'aucun traitement
d'utilisateur
> que je ne maitrise pas soit en cours d'utilisation car il est déjà


arrivé
> que de simples consultations de tables laissés en marche le soir (avec
> Microsoft Access ou Microsoft Query) bloquent certaines des mise-à-jour


de
> ces traitements. Mais je ne veux pas interrompre d'autres traitements
> d'aministration qui pourraient être déjà en cours. C'est pourquoi je me
suis
> tourné vers cette instruction de restriction autorisant uniquement les
> administrateurs, mais elle semble détruire également les connexions
> courantes d'aministration.
>
> Voilà tout mon problème.
> Sébastien
>
> "Med Bouchenafa[MVP]" a écrit dans le message


de
> news:eG$sRl$
> > Ce message n'est pas celui attendu lorsque l'on se connecte et que


l'on
a
> le
> > droit d'accès à la base
> > C'est peut-être un autre problème qui n'a rien à voir avec le fait que
la
> > base passe en mode de restriction
> > J'avoue aussi ne pas bien comprendre la manip que tu fais.
> > Regarde dans le journal des erreurs de SQL/Server (errorlog), tu


pourras
> > peut-être trouver quelque chose qui te mettra sur la piste
> >
> > --
> > Bien cordialement
> > Med Bouchenafa
> > TETRASET
> > 75015 Paris
> >
> > "Sebastien" wrote in message
> > news:uKlY7s#
> > > Sous isqlw, je récupère que ce message
> > >
> > > [Microsoft][ODBC SQL Server Driver]Une erreur non spécifiée s'est
> produite
> > > sur SQL Server.
> > > Il est possible que la connexion ait été interrompue par le serveur.
> > > Connexion interrompue
> > >
> > > Ce message est le même que je sois ou non connecté sa.
> > > Ensuite, si je suis connecté sa, je peux bien sûr relancer des accès
sur
> > la
> > > base. Mais au moment ou passe l'Alter database, tout ce qui est en
cours
> > > semble stoppé sans distinction du rôle de l'utilisateur.
> > >
> > > "Med Bouchenafa[MVP]" a écrit dans le
message
> de
> > > news:eDtYBU%
> > > > Normalement avec cette option, tous les membres des rôles


db_owner,
> > > > dbcreator, ou sysadmin peuvent utiliser la base de données.
> > > > Quel est le message d'erreur obtenu ?
> > > >
> > > > --
> > > > Bien cordialement
> > > > Med Bouchenafa
> > > > TETRASET
> > > > 75015 Paris
> > > >
> > > > "Sebastien" wrote in message
> > > > news:#$
> > > > > Bonjour,
> > > > >
> > > > > Dans un traitement, j'aimerai pouvoir forcer la déconnexion de
tous
> > les
> > > > > utilisateurs connectés à une base, sauf ceux qui font partie du
> groupe
> > > des
> > > > > administrateurs.
> > > > > J'ai essayé cette requète
> > > > > ALTER DATABASE mabase SET RESTRICTED_USER WITH ROLLBACK


IMMEDIATE
> > > > > Elle passe bien la base en dbo_only en arrêtant les connexions


des
> > > > > utilisateurs non administrateurs, mais aussi celles des
> > administrateurs
> > > > > (même sa) !!!
> > > > >
> > > > > Est-ce normal ?
> > > > > Y a t'il une autre solution plus ou moins simple ?
> > > > >
> > > > > Merci d'avance
> > > > >
> > > > > Sébastien
>
>
>
>