Skip navigation.

Welcome chez moi !

L'histoire d'une vie d'entrepreneur / développeur Web Multimédia

Posts tagged with "serveur"

Faire un LIMIT sur Microsoft SQL Server/Do a LIMIT on Microsoft SQL Server

, , ,


Un truc dingue quand même... Figurez-vous que Microsoft SQL Server ne possède pas la fonction LIMIT, présente dans MySQL, permettant de limiter le nombre d'enregistrement.
Concrètement, si vous désirez par exemple afficher les 5 premières lignes renvoyées par une requête, vous ne pourrez pas faire un bon vieux LIMIT 5 à la MySQL.

La solution? Y'en a une biensûr. Pour renvoyer les X premiers enregistrements, il vous faudra utiliser la directive TOP.

Ex : SELECT TOP 3 * FROM table


la commande précédente permettra de renvoyer les 3 premières lignes complètes issue de la requête.

Si vous avez recours à une sélection plus complexe, il vous faudra passer par la directive BETWEEN, mais je ne sais pas l'utiliser!

Un conseil, si vous avez le choix technique entre MySQL et SQL Server, optez pour MySQL!
D'autant plus que les dernières versions supportent les procédures stockées, Triggers et autres fonctions.

Read more...

Connect a Microsoft SQL Server 2005 Express Edition avec/using PHP

, , , ...

A l'occasion d'une mission de consulting pour un client désireux d'ouvrir son système d'information basé sur l'ERP Navision de Microsoft, il a fallu développer un système de script PHP afin de réaliser des statistiques commerciales issues des données contenues dans les tables SQL Server utilisées par Navision.

Cependant, afin de ne pas ralentir le travail de l'entreprise à cause de tests successifs, redémarrage de service SQL ou autres, la solution employée a été d'utiliser un serveur SQL 2005 Express Edition, version gratuite fournie par Microsoft destinée aux développeurs.
De ce fait, toute la phase de tests/développement pouvait être réalisée localement.

Le problème, c'est que MSSQL est plus difficilement accessible qu'un bon vieux MySQL. Il va donc falloir redoubler d'efforts (et de courage) pour arriver à établir la connexion.

Voici un descriptif des étapes :


1 - Téléchargez et installez Microsoft SQL Server 2005 Express Edition sur le site de Microsoft (gratuit)

2 - Télécharger Microsoft SQL Server Management Studio Express (gratuit)

3 - Activez la librairie php_mssql.dll (pour windows) dans votre php.ini ou téléchargez les extensions PECL pour votre version de PHP sur le site officiel et configurez dans votre fichier php.ini le répertoire des extensions puis, redémarrez Apache en croisant les doigts pour que les extensions soient bien trouvées. Descendez également dans la partie concernant la gestion de serveur Microsoft SQL [MSSQL] et mettez le paramètre mssql.secure_connection à Off.

4 - Lancez regedit en passant par la commande Exécuter de votre menu démarrer et déployez l'arborescence HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\SuperSocketNetLib\Tcp et notez quelque part le port spécifié en face de la clé nommée TcpPort (ex: 1034).

5 - Lancez l'utilitaire de configuration serveur SQL et dans l'arborescence de gauche, ouvrez les propriétés concernant TCP/IP et les Canaux nommés (Configuration du réseau SQL..., configuration de SQL Native Client/Protocoles Clients). Activez-les.
Remarque, le port présent dans la boite de dialogue peut être différent de celui noté précedemment : n'y touchez pas!

6 - Ouvrez SQL Server Managment Studio Express et connectez-vous à votre serveur en utilisant une Authentification Windows. Votre serveur apparait dans la partie de gauche avec ses différents composants systèmes. Faites un clic droit sur la racine > Propriétés > Sécurité (en général MON-PC\SQLEXPRESS, où MON-PC est le nom de la station sur laquelle le serveur est installé).
Dans la partie de droite, sélectionnez "mode d'authentification SQL Server et Windows", validez et redémarrez votre serveur SQL (du moins le service) comme demandé.
Vous pouvez également créer une base de données à cette étape.

7 - Ajoutez un utilisateur à la racine de votre serveur en vous rendant dans le sous-dossier Sécurité > Connexions et faites un clic droit dans la zone affichant les utilisateurs à droite pui, sélectionnez "Nouvelle Connexion". Saisissez le nom d'utilisateur désiré (ex: toto) et sélectionnez "Authentification SQL Server". Celà vous permettra de vous connectez comme vous le feriez sous MySQL, à savoir avec un nom d'utilisateur et un mot de passe en clair dans votre code. Définissez le mot de passe. Dans le menu de gauche, sélectionnez "Rôles du Serveur" et assignez le nouvel utilisateur à "dbcreator" pour lui donnez le maximum de privilèges. Dans "mappage de l'utilisateur", cochez la base de données sur laquelle votre script aura a effectuer des opérations. Si vous n'avez encore crée aucune base, vous pourrez revenir à cette étape par la suite.
Pointez maintenant sur "Etat" à gauche et vérifiez que votre utilisateur a accès au moteur de base de donner (Octroyer) et qu'il est autorisé à se connecter de façon distante (Connexion: activé).

8 - Vous pouvez passer maintenant aux joies du codage en insérant par exemple le bout de code si après



$link = mssql_connect('MON-PC,port','user','pass',false);

MON-PC: Nom du poste ou adresse IP du serveur
port: numéro relevé dans la base de données
user: utilisateur crée pour l'utilisation du script
pass: mot de passe défini pour l'utilisateur

A ce stade, la connexion devrait fonctionner. Pour le vérifier, créez un fichier ne contenant que cette insctruction.

Dans le cas où la connexion échouerez systématiquement, il s'agit peut être d'un problème de version de votre dll sur laquelle s'appui PHP pour se connecter.
Pour remédier au problème, rendez-vous sur Userscape traitant également des problèmes de connexion et proposant une DLL à jour. téléchargez cette librairie, renommez l'ancienne et copiez-là dans votre répertoire PHP et Windows/System32
Redémarrez votre serveur Apache.

Si le problème persiste, vérifiez que l'utilisateur que vous avez crée a bien les privilèges nécessaires sur le serveur ainsi que sur la base de données. Vérifiez également que la connexion sécurisée dans PHP est bien à Off, sinon PHP traitera la connexion sous le type "Authentification Windows" au lieu de "SQL Server".

Read more...