Sybase - La FAQConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 77, dernière mise à jour : 8 février 2009  Ajouter une question

 

Question / réponses à tout ce que vous avez toujours voulu savoir sur Sybase ASE et ses dérivés sans jamais oser le demander


SommaireUtilisateurs et connexions (10)
précédent sommaire suivant
 

Si vous n'arrivez pas à vous connecter à une base de données de votre serveur, procédez comme ci-dessous.

  • Assurez-vous que l'Open Client Sybase a bien été installé sur votre poste
  • Vérifiez vos variables d'environnement SYBASE, SYBASE_OCS et PATH (qui doit pointer sous SYBASE_OCS\bin) soient bien configurées
  • vérifiez que votre fichier de configuration (%SYBASE%\ini\sql.ini sous Windows, $SYBASE\ini\interfaces sous Unix) comporte bien le nom et les paramètres corrects
  • Vérifiez que votre serveur ne se trouve pas derrière un serveur proxy.
  • Vérifier que votre serveur ne se trouve pas derrière un Firewall.
  • Testez une connexion via isql, ce qui aura le mérite de vous retourner une code erreur "clair":

Code : Sélectionner tout
1
2
 
isql -U VotreLogin -P VotreMotDePasse -S VotreServeurSybase

Mis à jour le 28 février 2006 Fabien Celaia

Code sql : Sélectionner tout
1
2
3
4
  
SELECT  user_name() AS 'Utilisateur de la base', 
suser_name() AS Login, 
@@spid as 'No de connexion'
Avec un peu plus d'informations

Code sql : Sélectionner tout
1
2
3
4
5
6
7
8
9
  
use master 
select d.name as 'Base de donnée courante', 
       case when fid=spid then 'Processus maître' else 'processus escalve' end as 'Processus' 
       p.cmd  as 'commande en cours', 
   p.program_name  as 'Programme', 
   p.clienthostname as 'Provenance de connexion' 
from sysprocesses p inner join  sysdatabases d on d.dbid=p.dbid 
where spid=@@spid

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
4
  
select spid, loginame Utilisateur , cmd, program_name  
from master..sysprocesses  
where dbid = db_id(@db) and status <> 'BACKGROUND'

Mis à jour le 28 février 2006 Fabien Celaia

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
Create  PROC sp_ddluser (@login varchar(30))  
as  
BEGIN  
/* Auteur : Fabien Celaia  
 * Date   : 6.6.05  
 * Desc   : Extraction du DDL d'un utilisateur spécifique permettant sa recréation multi-serveurs  
 * IParm  : @login (obligatoire) : l'utilisateur à extraire  
 * OParm  : 0 = succès  
 *      -1 = l'utilisateur n'existe pas  
 */  
  
  
if not exists (select * from sysusers where name = @login)  
   begin  
   PRINT 'L''utilisateur '+@login+'n''existe pas dans la base '+db_name()+' du serveur '+@@servername  
   return -1  
   end  
  
if not exists (select * from master..syslogins where name = @login)  
   begin  
   /* Login inexistant => création */  
   select 'exec sp_addlogin '+ @login+ ', MotDePasse'  
   end  
if exists (select * from sysalternates where suid=suid(@login)) 
/* C'est un alias */ 
begin 
SELECT 'EXEC SP_DROPALIAS '+@login  
SELECT 'EXEC SP_ADDALIAS '+@login+', '+ suser_name(altsuid)  
FROM SYSALTERNATES  
WHERE suid=suid(@login) 
end 
else 
/* C'est un utilisateur */ 
begin 
SELECT 'EXEC SP_DROPUSER '+@login  
SELECT 'EXEC SP_ADDUSER '+@login+', '+ @login  
end 
  
/* membres de groupes */  
select 'GRANT ROLE '+ g.name +' TO '''+u.name+''''  
from sysmembers m inner join sysusers u  
on m.memberuid = u.uid  
inner join sysusers g  
on m.groupuid=g.uid  
where u.uid > 2  
and u.name = @login  
  
  
/*Droits*/  
select  
case p.protecttype  
   when 206 then 'REVOKE'  
   else 'GRANT ' end +  
  
case p.action  
   when 26 then 'REFERENCES'  
   when 178 then 'CREATE FUNCTION'  
   when 193 then 'SELECT'  
   when 195 then 'INSERT'  
   when 196 then 'DELETE'  
   when 197 then 'UPDATE'  
   when 198 then 'CREATE TABLE'  
   when 203 then 'CREATE DATABASE'  
   when 207 then 'CREATE VIEW'  
   when 222 then 'CREATE PROCEDURE'  
   when 224 then 'EXECUTE'  
   when 228 then 'BACKUP DATABASE'  
   when 233 then 'CREATE DEFAULT'  
   when 235 then 'BACKUP LOG'  
   when 236 then 'CREATE RULE' end +  
' ON ' + o.name +  
case when p.action < 200 then  
   case  when p.protecttype = 206 then ' FROM ' else ' TO ' END +u.name  
else '' end +  
  
case when p.protecttype = 204 then ' WITH GRANT OPTION' else '' end  
  
from sysprotects p  
inner join sysusers u on u.uid=p.uid  
inner join sysobjects o on o.id=p.id  
where    p.columns = 0x01 OR p.columns is null  
and u.name = @login  
order by o.name  
  
end

Mis à jour le 28 février 2006 Fabien Celaia

Checkez le port utilisé par le serveur Sybase (par défaut, le 5000):

  • Sous Windows, dans le fichier %SYBASE%\ini\sql.ini
  • Sous Unix, dans le fichier %SYBASE%/interfaces

puis demandez à votre administrateur réseau de libérer le trafic de ce port sur son firewall

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
4
  
select name loginname,   pwdate  
from master..syslogins  
where loginname is not null

Mis à jour le 28 février 2006 Fabien Celaia

Il faut supprimer l'utilisateur et le recréer. Il se peut que cet utilisateur soit en fait un alias:

Code SQL : Sélectionner tout
1
2
3
4
  
exec sp_dropuser 'utilisateur' -- Suppression de l'utisateur 
exec sp_dropalias 'utilisateur' -- Suppression d'un éventuel alias  
exec sp_adduser 'utilisateur' {,'login'} -- recrée utilisateur et l'associer, au besoin, à login

Mis à jour le 28 février 2006 Fabien Celaia

Oui, mais ce n'est pas simple et limité à certaines conditions:

  • ASE doit fonctionner sous Windows
  • Seul le protocole named pipe est couvert (donc pas TCP/IP)

Mis à jour le 27 septembre 2007 Fabien Celaia

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique Sybase