| ||
auteur : SergioMaster | ||
Beaucoup recommandent IB Pump ou IB Data Pump, le problème est quand vous avez des relations complexes entre tables. Dans de tel cas, il est préférable d'utiliser un outil comme FBCopy qui tri les tables selon leurs dépendances (clés étrangères, contraintes d'intégrité) http://www.firebirdfaq.org/fbcopy.php Comme autre alternative, vous pouvez désactiver les contraintes durant l'import puis les remettre plus tard. Si vous voulez importer des données à partir de sources non-Firebird, alors IB DataPump est probablement la meilleure option gratuite disponible. Il est même capable de récréer la structure d'une base de données Firebird abimée, donc vous pouvez l'utiliser comme outil de migration pour migrer à partir d'autres systèmes DBMS. Il existe d'autres outils génériques (non spécifique à Firebird) pour pomper les données, faites au moins un essai avec http://scriptella.javaforge.com Si vous connaissez d'autres outils gratuits et utiles pour copier les données faites le nous savoir, merci. traduction réalisée depuis http://www.firebirdfaq.org/faq20/ |
| ||
auteur : SergioMaster | ||
Pour exécuter une instruction SELECT, il est quand même nécessaire de démarrer une transaction. Si vous voulez une base en lecture seule pour la mettre sur un média en lecture seule comme un CD ou DVD ROM, vous pouvez le faire avec :
... ou avec votre outil d'administration favori. C'est également possible via les API Services, de façon à ce que vous puissiez le faire à partir de votre application. Prenez note que vous ne pouvez faire ce changement qu'au cours de la préparation de la base de données, car l'indicateur de lecture seule doit être écrit dans le fichier base de données. Quand la base de données est en lecture seule, la seule chose modifiable est l'indicateur lecture seule lui-même (pour remettre la base en lecture/écriture). Traduction réalisée depuis http://www.firebirdfaq.org/faq164/ |
| ||
auteur : SergioMaster | ||
Si vous voulez le faire à partir d'une application, un simple essai de connexion devrait suffire. Autrement vous avez différentes options:
Traduction réalisée depuis http://www.firebirdfaq.org/faq123/ |
| ||
auteur : SergioMaster | ||
C'est relativement simple, la seule chose dont vous devez vous rappeler est que vous devez toujours utiliser ib_util_malloc() pour allouer de la mémoire si votre UDF doit renvoyer une valeur Chaîne. L'UDF doit être alors déclarée comme FREE_IT, de façon à ce que Firebird libère la mémoire après avoir lu la chaîne. Pour utiliser ib_util_malloc(), vous devez importer celle-ci depuis ib_util.dll dans votre programme - et vous assurez que vous l'utilisez en lieu et place des fonctions normales d'allocation mémoire. Voici un exemple simple d'UDF Delphi :
Déclaration dans Firebird:
Traduction réalisée depuis http://www.firebirdfaq.org/faq83/ |
| ||
auteur : SergioMaster | ||
Il n'existe pas de telle implémentation dans Firebird, mais vous pouvez utiliser quelques astuces. L'exemple suivant requière une colonne unique de type entier (en général une clé primaire):
Si vous n'avez besoin que d'une ligne, limitez le résultat en utilisant les clauses FIRST ou ROWS. Cette requête vous donnera toujours le même résultat pour la même valeur de la variable seed, pour un résultat différent vous devrez changer sa valeur. Vous pourriez par exemple utiliser la valeur de int_col de la dernière exécution, ou récupérer une nouvelle valeur d'un générateur etc... (assurez vous simplement de bien modifier la valeur de seed dans les deux endroits de l'expression). Traduction réalisée depuis http://www.firebirdfaq.org/faq326/ |
| ||
auteur : SergioMaster | ||
Vous avez probablement l'habitude d'utiliser une base de données mono-fichier que vous pouvez déplacer comme bon vous semble. Mais, si votre base de données est devenue trop grosse vous pourriez avoir besoin d'en faire une multi-fichiers. Les chemins vers les fichiers secondaires sont absolus et stockés dans la page d'entête du premier fichier de la base. Si vous avez besoin de déplacer ces fichiers, il est recommandé de faire un backup de la base suivi d'un restaure au nouvel endroit. Cependant, si vous avez vraiment, vraiment besoin de les copier ailleurs, vous pouvez utiliser l'outil freeware GLink d'Ivan Prenosil: http://www.volny.cz/iprenosil/interbase/ip_ib_download.htm Traduction réalisée depuis http://www.firebirdfaq.org/faq179/ |
| ||
auteur : SergioMaster | ||
Le meilleur moyen est de télécharger le freeware IBDataPump de CleverComponents. Il extraira les méta-données des bases Paradox/dBase/FoxPro, créera toutes les tables dans une base de données Firebird puis copiera toutes les données. Vous aurez probablement une base Firebird opérationnelle en moins d'une heure. http://www.clevercomponents.com/products/datapump/ibdatapump.asp Traduction réalisée depuis http://www.firebirdfaq.org/faq156/ |
| ||
auteur : SergioMaster | ||
Quelques astuces :
De cette manière nous aurons toujours les 5 derniers fichiers traces, et ceux trop vieux auront été effacés. Vous pouvez aussi utiliser zip, rar, bzip2 ou autre mode de compression pour compacter les vieux fichiers. Comme ce n'est que du texte, ils se compressent très bien.
Prenez note que si vous faites cela , vous n'aurez plus aucune information pour établir un diagnostic. Il est toujours préférable d'essayer de trouver quelles sont les erreurs, ce qui les cause et de régler le problème à la source. Traduction réalisée depuis http://www.firebirdfaq.org/faq126/ |
| ||
auteur : Cl@udius | ||
Si vos bases de données sont 'en-ligne', c'est-à-dire accessibles par le réseau, alors vous pouvez utiliser un outil gratuit tel que IB Pump ou un des outils commerciaux qui intègrent cette fonctionnalité. Sous Linux vous pouvez utiliser l'outil Open Source FBCopy: http://www.firebirdfaq.org/fbcopy.php Dans le cas contraire, vous devrez exporter puis réimporter vos données. La plupart des outils d'administration permettent d'exporter au format CSV, XML ou sous forme d'instructions INSERT. Vous pouvez également utiliser l'outil Open Source FBExport (disponible sous Windows et Linux) qui gèrent parfaitement les champs BLOB notamment. http://www.firebirdfaq.org/fbexport.php Traduction réalisée depuis http://www.firebirdfaq.org/faq86/ |
| ||
auteur : Cl@udius | ||
C'est relativement simple, utiliser isql avec l'option -x ou -a.
Cependant soyez prudent et effectuez tout d'abord quelques tests.
Certains outils commerciaux tiers aiment bien jouer directement avec les tables systèmes, et isql n'est pas toujours capable de comprendre ce type de manipulations. Vous pouvez également extraire les DDL avec FlameRobin. Ouvrez la page des propriétés de la base de données et sélectionnez l'option DDL en haut de la page. Traduction réalisée depuis http://www.firebirdfaq.org/faq73/ |
| ||
auteur : Cl@udius | ||
Bien qu'il soit possible de changer cet indicateur dans la base de données, ce n'est pas recommandé car cela ne se résume pas uniquement à cette simple opération. Les dialectes opèrent de manières différentes sur les données numériques et dates, ce qui affecte tous les objets compilés (BLR) soit les procédures stockées, déclencheurs, champs calculés, etc. Modifier toutes ces informations à la volée est une méthode délicate, il est donc recommandé de créer une nouvelle base et d'y recopier les données. Vous pouvez facilement extraire la structure de la base de données en utilisant isql puis y ajouter les données en utilisant l'un des outils listés par ailleurs dans la FAQ. Il n'est pas possible de modifier le dialecte en effectuant un backup/restore de la base de données. Traduction réalisée depuis http://www.firebirdfaq.org/faq186/ | ||
lien : ![]() lien : ![]() |
| ||
auteur : SergioMaster | ||
Pour l'obtenir avec SQL, vous devrez utiliser Firebird 2.0 (propre adresse), ou Firebird 2.1 (adresse de n'importe qui): Si vous utilisez Firebird 2.0 ou plus, sollicitez la fonction GET_RDB$CONTEXT avec les paramètres ('SYSTEM', 'CLIENT_ADDRESS'). A partir de Firebird 2.1 , vous pourrez obtenir les adresses des clients en les sélectionnant dans les tables de monitoring. Avec Firebird 1.x vous pouvez essayer d'obtenir cette information de la pile TCP/IP, en utilisant les commandes netstat ou lsof à partir de l'invite de commande. Recherchez le port de Firebird (3050 ou gds_db). Traduction réalisée depuis http://www.firebirdfaq.org/faq101/ |
| ||
auteur : SergioMaster | ||
Réponse courte : Vous devez pour cela utiliser le mode SuperServeur, renseignez la valeur RemoteAuxPort du fichier firebird.conf et créez deux tunnels (un pour les données, l'autre pour les évènements). Pour des explications détaillées avec exemples, lisez ce document : http://www.flamerobin.org/events_paper.pdf Traduction réalisée depuis http://www.firebirdfaq.org/faq258/ |
| ||
auteur : SergioMaster | ||
Ce n'est pas vraiment une chose à configurer dans Firebird. Il existe une valeur RemoteBindAddress dans le fichier firebird.conf qui configure les interfaces/adresses que Firebird écoute, c'est tout. Vous utiliserez plutôt le pare-feu de votre système pour mettre cela en place. A coté du pare-feu, si vous utilisez la version Firebird mode Classic sous Linux, vous pourrez utiliser les fichiers de contrôle d'accès de xinetd ou inetd /etc/hosts.allow et /etc/hosts.deny. Avec xinetd vous pouvez également modifier le fichier de configuration /etc/xinetd.d/firebird pour le service Firebird, et ajouter une ligne comme celle-ci :
Traduction réalisée depuis http://www.firebirdfaq.org/faq148/ |
| ||
auteur : SergioMaster | ||
Vous devez fermer la base (en utilisant gfix ou un autre outil). Firebird 2.0 offre divers mode de fermeture (mono-utilisateur, connexion unique, connexion multiple, etc.). Jetez un ?il au notes de versions de Firebird 2 pour les détails. Traduction réalisée depuis http://www.firebirdfaq.org/faq131/ |
| |||
auteur : SergioMaster | |||
Tables et vues sont stockées dans la table système RDB$RELATIONS. les tables et vues systèmes ont un indicateur RDB$SYSTEM_FLAG, tandis que les tables utilisateur ont la valeur NULL ou 0. Vous pouvez distinguer les vues des tables par la valeur du champ RDB$VIEW_BLR. Prenez note qu'il y a aussi un champ RDB$VIEW_SOURCE qui stocke un source lisible de la vue pouvant être mis à NULL - la base de données continuera à être pleinement fonctionnelle car utilisant le BLR pré-compilé. Voici une requête listant toutes les tables utilisateur :
Une requête pour lister toutes les vues
Les colonnes des tables et vues sont stockées dans RDB$RELATION_FIELDS. Cela stocke le nom, la valeur par défaut, le domaine et l'indicateur de nullité (nullifiable). Pour obtenir le type de données vous devrez lires les informations de domaine contenues dans RDB$FIELDS. Voici une requête qui liste toutes les tables utilisateurs avec leurs colonnes
Traduction réalisée depuis http://www.firebirdfaq.org/faq174/ |
| ||||
auteur : SergioMaster | ||||
Il en existe déjà un dans le fichier firebird.conf, mais peut-être n'est-il pas assez évident. Voici les valeurs de base ,'None' pour interdire complètement les UDFs et 'Full' pour les permettre partout (ce que vous avez probablement compris de vous même) :
Voici un moyen de réduire :
Pour plusieurs répertoires , vous faites ainsi
Pour les utilisateurs Linux
La valeur par défaut est 'Restrict UDF', 'UDF' où UDF est le répertoire lié au répertoire principal de l'installation Firebird. Traduction réalisée depuis http://www.firebirdfaq.org/faq203/ |
| ||
auteur : SergioMaster | ||
Oui. Vous pouvez utiliser ISQL pour cela. Il se trouve dans le répertoire 'bin' de votre installation Firebird. Si vous voulez l'essayer de manière interactive (mode console) , exécuter isql, tapez :
Pour l'exécuter dans un fichier de commandes (.bat) ou un script shell, utiliser l'option -i :
Si vous avez des instructions DML dans votre script, n'oubliez pas la commande COMMIT à la fin du fichier. Assurez vous également que le fichier se termine par le caractère nouvelle ligne (LF), car ISQL exécute la commande de la ligne après avoir lu ce caractère. Traduction réalisée depuis http://www.firebirdfaq.org/faq124/ |
| ||||
auteur : SergioMaster | ||||
Le fichier de configuration Firebird (firebird.conf) contient des descriptions qui expliquent tout, mais quelques fois elles sont confuses et il est difficile de comprendre que faire exactement si vous n'avez pas d'exemple. L'une de ces valeurs c'est ExternalFileAccess. Beaucoup de personnes ont tenté de mettre 'Full' car plus facile que d'essayer de deviner le bon format. Voici les valeurs de base ('None' pour interdire les tables externes et 'Full' pour les permettre partout) ce que vous avez probablement compris de vous même :
Et voici ces valeurs 'astucieuses' :
Pour plusieurs répertoires, utilisez quelque chose comme :
Pour les utilisateurs Linux :
Traduction réalisée depuis http://www.firebirdfaq.org/faq195/ |
| ||
auteur : SergioMaster | ||
Bien que l'ordre importe peu aux applications (vous pouvez toujours faire des requêtes explicites avec l'ordre souhaité), cela sera, peut-être, plus facile pour vous quand vous travaillerez sur les tables avec un outil d'administration de base de données. Vous pouvez déplacer une colonne vers une position différente en utilisant l'instruction SQL suivante :
Les positions sont numérotées à partir de un. Si vous voulez permuter deux champs, assurez-vous de faire l'instruction pour les deux. Un outil comme Flamerobin vous permet de faire cela facilement (option 'Reorder Fields' dans l'écran propriétés de table). Traduction réalisée depuis http://www.firebirdfaq.org/faq185/ |
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 © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.