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


SommaireAdministration (20)
précédent sommaire suivant
 

Code SQL : Sélectionner tout
1
2
  
EXEC sp_spaceused 'MaTable'

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
  
EXEC sp_spaceused
Code SQL : Sélectionner tout
1
2
  
EXEC sp_helpdb MaBase

Mis à jour le 28 février 2006 Fabien Celaia

1-Consultation des tables systèmes

Code SQL : Sélectionner tout
1
2
3
  
SELECT name  
FROM master..sysdatabases
2-Utilisation de la procédure stockée

Code SQL : Sélectionner tout
1
2
3
  
EXEC sp_databases 
go

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
4
  
SELECT COUNT(*) 
 FROM master..sysprocesses 
WHERE dbid=db_id('MabaseDeDonnée')
Pour la base courante ce sera alors :

Code SQL : Sélectionner tout
1
2
3
4
  
SELECT COUNT(*) 
 FROM master..sysprocesses 
WHERE dbid=db_id()

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  
SELECT  
     convert(char(4), spid) Spid,  
     convert(char(4), blocked) Blk,  
     convert(char(4), cpu) CPU,  
          left(loginame,15) 'Users',  
     left(hostname, 15) 'Host',  
          left(db_name(dbid),15) DB,  
          convert(char(20), cmd) Command,  
     convert(char(12), program_name) Program ,  
     convert(char(10), status) Status  
FROM master..sysprocesses  
WHERE  spid = @@spid  
AND status not in ( 'BACKGROUND', 'sleeping')  
ORDER BY cpu DESC

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
  
sp_configure connections, n 
--n est le nombre de connections souhaitées.

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
4
  
EXEC sp_rename maTable.Macolonne,  maTable.MaNouvelleColonne 
update statistics NouvelleTable -- optionnel 
exec sp_recompile NouvelleTable

Mis à jour le 28 février 2006 Fabien Celaia

Pour changer le type de données d'une colonne, MS SQL Serveur fournit la clause
Alter Column
Exemple ferait l'affaire:

Code SQL : Sélectionner tout
1
2
3
  
ALTER TABLE MyTable  
ALTER COLUMN MyColumn NVARCHAR(20) NOT NULL
Vous pouvez également proceder comme ceci:

  • Demmarrer une transaction sérialisée;
  • Créer une nouvelle table avec le nouveau type de données telle que souhaitée;
  • Importer les données de l'ancienne table vers la nouvelle;
  • Supprimer l'ancienne table;
  • Renommer la nouvelle table avec l'ancien nom;

Exemple :

Code SQL : 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
  
--Supposons que nous ayant une table T_Person dont la definition est : 
CREATE TABLE Tmp_T_PERSONNE 
( 
PER_ID int NOT NULL, 
PER_NOM varchar(50) NOT NULL, 
PER_PRENOM varchar(50) NULL, 
PER_NE_LE smalldatetime NOT NULL, 
)  ON [PRIMARY] 
GO 
--Et que nous voulons changer le type Per_Nom du type varchar(50) au type varchar(100) 
--Nous aurons : 
BEGIN TRANSACTION 
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 
--Créer une table temporaire ayant même structure que la première 
CREATE TABLE Tmp_T_PERSONNE 
( 
PER_ID int NOT NULL, 
PER_NOM varchar(100) NOT NULL, 
PER_PRENOM varchar(50) NULL, 
PER_NE_LE smalldatetime NOT NULL, 
)  ON [PRIMARY] 
GO 
-- Peupler la table 
IF EXISTS(SELECT * FROM T_PERSONNE) 
 EXEC('INSERT INTO Tmp_T_PERSONNE (PER_ID,PER_NOM, PER_PRENOM, PER_NE_LE, PAY_ID, PER_NE_A) 
SELECT PER_ID, PER_NOM, PER_PRENOM, PER_NE_LE FROM T_PERSONNE TABLOCKX') 
GO 
--Supprimer la table 
DROP TABLE dbo.T_PERSONNE 
GO 
--Renommer la nouvelle table avec l'ancien nom 
EXECUTE sp_rename N'Tmp_T_PERSONNE', N'T_PERSONNE', 'OBJECT' 
GO 
COMMIT

Mis à jour le 28 février 2006 Fabien Celaia

Code SQL : Sélectionner tout
1
2
3
4
  
EXEC sp_rename 'AncienneTable', 'NouvelleTable' 
update statistics NouvelleTable -- optionnel 
exec sp_recompile NouvelleTable

Mis à jour le 28 février 2006 Fabien Celaia

Solution officielle

Code SQL : Sélectionner tout
1
2
  
EXEC sp_renamedb 'NomActuel','NouveauNom'
Solution officieuse, non supportée et nettement plus risquée si des requêtes sont effectuées inter-bases

Code SQL : Sélectionner tout
1
2
3
4
5
6
7
8
  
use master 
exec sp_configure allow_updates,1 
update sysdatabases set name='NouveauNom' where name='NomActuel' 
use NouveauNom 
update sysreferences set pmrydbname='NouveauNom' where pmrydbname='NomActuel' 
update sysreferences set frgndbname='NouveauNom' where frgndbname='NomActuel' 
exec sp_configure allow_updates,0
Vous pouvez également créer une nouvelle base de données et la charger via DUMP/LOAD de l'ancienne base de données.

Mis à jour le 28 février 2006 Fabien Celaia

Il existe 2 éditions principales:

  • Adaptive Server Enterprise (commerciale)
  • Adaptive Server Express (libre)

La version Express est une version bridée, destinée à concurrencer els offres de Microsoft (SQL Express 2005), Oracle (oracle Express), IBM (DB2/UDB Express) et MySQL.

A la version commerciale peuvent être ajoutés un certain nombres de modules, malheureusement payants:

  • SSL
  • FTS
  • etc....

Dès la version 15, le module Java est compris dans toutes les versions.

Mis à jour le 28 février 2006 Fabien Celaia

Code sql : Sélectionner tout
1
2
  
select @@version

Mis à jour le 5 octobre 2006 Fabien Celaia

Le vdevno ne se trouve pas dans la table sysdevices comme on pourrait s'y attendre, ou plus précisément pas directement.

Il est en fait déduit de la colonne vstart.

Depuis la version 12.5 d'ASE, il n'est plus nécessaire de l'ajouter dans le DISK INIT... le système sait désormais le chercher tout seul.

Mis à jour le 21 mars 2007 Fabien Celaia

Oui mais...

Comme un peu toujours avec Sybase, tous les mécanismes y sont, mais il faut coder un peu...

Il faut donc se baser sur les procédures stockés sp_thresholdactions afin de spécifier des seuils qui déclencheront des appels aux commandes disk init, alter database...

Mis à jour le 21 mars 2007 Fabien Celaia

La compression des backup en direct est une fonctionnalité disponible sur ASE depuis sa version 12.

Le taux de compression peut varier de 0 (pas de compression) à 9. Plus la sauvegarde est compressée et plus elle prend de temps.

Le temps de compression dépend de quantité de paramètres tels que le type de données à compresser, le nombre et la puissance CPU, etc.

D'expérience, le meilleur taux est de 3 à 5.

Compression Taille Durée en ms du dump Durée en ms du load
0 (sans) 49331575 10643 12203
1 8214414 9420 12343
2 7678205 9313 12313
3 7678179 9483 12530
4 7001562 10533 12266
5 6721395 11466 12283
6 6521125 12593 12063
7 6426230 14423 12313
8 6351917 25453 12250
9 6262898 54576 12390

Mis à jour le 31 mars 2007 Fabien Celaia

Il y a de nombreuses manières plus ou moins implicites de déterminer une table

  • NomDeTable
  • NomDuSchema.NomDeTable
  • NomDeLaBase.NomDuProprietaire.NomDeTable
  • NomDeLaBase..NomDeLaTable
  • NomDuServeurNomDeLaBase.NomDuProprietaire.NomDeTable

Si l'on souhaite, dans le cas extrême, lier 2 tables de 2 bases distinctes, situées chacune sur un serveur distinct, il faudra donc utiliser la nomenclature complète, en prenant soin au préalable de déterminer le serveur distant

Code tsql : Sélectionner tout
1
2
3
SELECT P.Nom, P.Prenom, L.NomLocalite 
FROM Personnes P INNER JOIN ServeurDistant.BaseDistante..Localites L 
ON P.CodeLocalite=L.IDLocalite

Mis à jour le 3 juin 2008 Fabien Celaia

L'infromation apparaît via un

Code tsql : Sélectionner tout
sp_helpdb
En mode direct, il est possible d'obtenir la même information via une requête sur sysdevices et sysusages

Code tsql : Sélectionner tout
1
2
3
4
select phyname  
from master..sysdevices, master..sysusages 
where vstart between low and high 
and dbid = db_id('VotreBase')
Code tsql : Sélectionner tout
1
2
3
4
select phyname  
from master..sysdevices D inner join master..sysusages U 
on D. vdevno = U.vdevno 
where dbid = db_id('VotreBase')

Mis à jour le 8 février 2009 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