Dernière mise à jour sur 28 sept. 2023, 10:18:04.
Catégorie:
Serveurs cloud
Les packages Debian suivants sont nécessaires :
freetds-bin - FreeTDS command-line utilities freetds-common - configuration files for FreeTDS SQL client libraries unixodbc - Basic ODBC tools php5-sybase - Sybase / MS SQL Server module for php5
Comme vous pouvez le voir, php5-sybase est en effet nécessaire ! Ce n'est pas une erreur :-)
L'installation des packages est facile via une seule ligne de commande, avec apt-get install
sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase
Après l'installation, redémarrez le service Web (apache2) :
sudo service apache2 restart
Vérifier si l'installation de tous les composants (freetds, unixodbc) s'est correctement terminée peut se faire via la commande tsql :
tsql -H yourserverhostname -p 1433 -U username -P password -D database
Si vous obtenez une connexion, les composants fonctionnent. Vous pouvez tester une requête via :
USE database GO SELECT * FROM Table; GO EXIT
Attention, si vous faites une sélection sur un champ nvarchar ou ntext vous pouvez avoir une erreur : "Les données Unicode dans un classement Unicode uniquement ou les données ntext ne peuvent pas être envoyées aux clients utilisant DB-Library (comme ISQL) ou ODBC version 3.7 ou plus tôt".
C'est normal, vous pouvez résoudre ce problème en éditant le fichier freetds.conf (la configuration FreeTDS).
sudo vi /etc/freetds/freetds.conf
Vous pouvez ajouter une section au fichier de configuration pour votre propre serveur ou instance de base de données :
# Kinamo SQL Server [yoursqlserver] host = yoursqlserver.poweredby.kinamo.be port = 1433 tds version = 8.0
En spécifiant la version "8.0" de TDS, vous évitez l'erreur Unicode.
Vous pouvez maintenant exécuter à nouveau la commande tsql, cette fois avec le paramètre -S au lieu de -H.
Par exemple, vous vous connectez sur le nom du serveur ou le nom de l'instance au lieu du nom d'hôte complet, et FreeTDS utilisera les paramètres que vous avez spécifiés, y compris la version de TDS.
tsql -S yoursqlserver -U username -P password -D database
:<?php $db = new \PDO('dblib:host=yoursqlserver.poweredby.kinamo.be;dbname=database', 'username', 'password'); return $db; ?>Attention, si vous obtenez une erreur : PDOException "could not find driver" vous vous connectez peut-être à PDO('mssql...); au lieu de PDO('dblib...);
Vous n'avez pas obtenu de réponse à toutes vos questions?
Ne vous inquiétez pas, faites une demande d'assistance!