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
- Liens internet utiles
- Connaître la taille occupée par une table et ses indexes.
- Connaître la taille occupée par une base de données ?
- Comment afficher la liste des bases de données d'un serveur ?
- Comment obtenir le nombre d'utilisateurs connectés à une base de données ?
- Quelle requête retourne les processus en train de consommer ?
- Quelle procedure stockée permet de limiter le nombre de connexions simultanées ?
- Comment renommer une colonne d'une table ?
- Comment changer le type de données d'une colonne ?
- Comment renommer une table ?
- Comment renommer une base de données ?
- Combien d'éditions existe-t-il pour Sybase ASE ?
- Comment retourner à l'écran plutôt que dans l'errorlog l'output des commandes dbcc ?
- Comment installer / configurer dbcc checkstorage ?
- Comment connaître la version de Sybase ?
- Dans quelle table trouver le vdevno ?
- Est-il possible d'avoir des segments autoextensibles, comme sous Oracle ou Microsoft SQL Server
- Quel est le taux de compression idéal pour un backup ?
- Comment requêter sur deux tables de deux bases différentes ?
- Comment savoir quels fichiers sur disques sont utilisés par une base de données spécifique
- Sybase - USA
- Sybase - ASE Document Sets English
- Sybase - ASE Document Sets French
- Sybase - Newsgroups
- Sybase - France
- Sybase - Troubleshooting and Error Messages Guide online
- ISUG - Faq
- ISUG
- Team Sybase
- Rob Verschoor - Sybase - Tips & Tricks
- Michael Peppler - Sybase
- Anthony Mandic - Sybase on Solaris
- Ed Barlow - For Database Administrators
- Todd Boss - Sybase DBA
- Brian Goss - Sybase DBA
Code SQL : | Sélectionner tout |
1 2 |
EXEC sp_spaceused 'MaTable' |
Code SQL : | Sélectionner tout |
1 2 | EXEC sp_spaceused |
Code SQL : | Sélectionner tout |
1 2 | EXEC sp_helpdb MaBase |
1-Consultation des tables systèmes
Code SQL : | Sélectionner tout |
1 2 3 | SELECT name FROM master..sysdatabases |
Code SQL : | Sélectionner tout |
1 2 3 | EXEC sp_databases go |
Code SQL : | Sélectionner tout |
1 2 3 4 | SELECT COUNT(*) FROM master..sysprocesses WHERE dbid=db_id('MabaseDeDonnée') |
Code SQL : | Sélectionner tout |
1 2 3 4 | SELECT COUNT(*) FROM master..sysprocesses WHERE dbid=db_id() |
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 |
Code SQL : | Sélectionner tout |
1 2 3 |
sp_configure connections, n
--n est le nombre de connections souhaitées. |
Code SQL : | Sélectionner tout |
1 2 3 4 | EXEC sp_rename maTable.Macolonne, maTable.MaNouvelleColonne update statistics NouvelleTable -- optionnel exec sp_recompile NouvelleTable |
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 |
- 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 |
Code SQL : | Sélectionner tout |
1 2 3 4 | EXEC sp_rename 'AncienneTable', 'NouvelleTable' update statistics NouvelleTable -- optionnel exec sp_recompile NouvelleTable |
Solution officielle
Code SQL : | Sélectionner tout |
1 2 | EXEC sp_renamedb 'NomActuel','NouveauNom' |
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 |
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.
Code sql : | Sélectionner tout |
1 2 | DBCC TRACEON (3604) |
Code sql : | Sélectionner tout |
1 2 |
select @@version |
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.
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...
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 |
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 |
L'infromation apparaît via un
Code tsql : | Sélectionner tout |
sp_helpdb
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') |
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 çaLes 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 © 2024 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.