[SQL Serveur] Comment obtenir un script de la base de données de développement en vue de l’appliquer en production ?

Power AMC 12 est indispensable lorsque l’on part de rien, on modélise le Modèle Conceptuel de Données, éventuellement, on réalise quelques modifications sur le Modèle Physique de Données bien que je déconseille, mieux vaut un script issu directement du MCD. On génére un script de la base vide.

SQL Serveur Management permet de scripter l’ensemble des procédures, des vues, des triggers pour obtenir un script complémentaire permettant de générer l’ensemble de la base de données.

SQL Serveur Publishing Wizard permet de récuperer les INSERT pour l’ensemble des données de la base. On peut aussi utiliser SQL Scripter pour récupérer les données par table, pour info, il est limité à 10 enregistrements par table en version demo.

Toad for sql serveur, un freeware, permet de créer des contraintes complémentaires simplement avec quelques clics de souris. j’avoue que cela rend bien service car écrire des contraintes à la main est fastidieux.

Un outil de versionning pour sauvegarder le script, les modifications, les évolutions de celui ci.

Qu’apporte l’outil « Best Practice Analyser » de SQL Server 2005 ?

Je recommande de passer chaque semaine le BPA sur l’ ensemble des serveurs de production. Cela permet de s’ assurer qu’ aucune base n’ a pas de sauvegarde, que les logs ne comportent pas d’ anomalies, de détecter d’ éventuels pannes de disque car il exige un contrôle d’ intégrité des bases (DBCC CheckDB)… Cela règle les problèmes de sécurité lors du premier passage comme le compte de service de SQL Serveur. A ce propos, il est préciser que l’ on ne doit pas utiliser le compte System. Pour régler ce point comme pour régler l’ ensemble des points de BPA, après désignation de l’ anomalie, vous devez vous reporter à l’ aide en ligne de BPA qui vous renvoie vers MSDN. Il faut savoir qu’ il existe une quarantaine de règle de bonne pratique que votre serveur doit respecter, de plus, de nouvelles règles peuvent être téléchargées. Toutes ces règles de bonnes pratique sont expliquées dans l’ aide de BPA ce qui doit renforcer la formation du DBA/Développeur.

Pour télécharger  SQL Serveur Best Practice Analyser cliquez ici

A quel moment doit avoir lieu l’optimisation d’une base ?

L’ importance de la normalisation de la base est essentiel. Le modèle relationnelle a fait passer le gros du travail de la partie développement à la partie conception.
L’ Architecte de la base, premier intervenant du projet, qui utilise POWER AMC ou Toad Data Modeler doit respecter absolument la 3 ème forme normale dans la définition de son modèle. On ne peut pas faire l’ économie d’un modéle relationnel dans la conception d’ une application.

Le deuxième pôle de l’ optimisation est le soin apporté à l’ écriture du SQL. Privilégié le plus possible l’ écriture de SQL à l’ écriture de Transact SQL. L’ utilisation de SQL permet l’ indexation et des performances supérieurs. Par exemple, la semaine dernière, mon patron me signale une application dont les temps de réponses dépassés 30 secondes. Fier de mes connaissances, je propose d’ optimiser la requête par une indexation adéquate. Je passe 3H00 sur la requête pour finalement découvrir que les 30 secondes sont perdus par l’ utilisation en cascade de fonctions. Évidemment, en tant que développeur, on doit répondre à des besoins fonctionnelles et l’encapsulation en fonction répond bien à nos besoins mais en production, avec 100000 lignes dans une table, on perd un temps précieux à l’ exécution.

Le troisième pôle de l’ optimisation est l’ indexation. Sur des tables de plus de 1000 lignes, il devient important d’ indexer. Un produit comme POWER AMC vous facilite le travail puisqu’ il génére la majorité des index à la conception pour des tables bien normalisé.

On découvre donc bien que l’ essentiel de l’ optimisation d’ une base de données ne se passe pas donc pas en production, par le DBA, mais lors de la fabrication, par le développeur et l’architecte de la base.

Ne simplifions pas trop, les développeurs règlent généralement très bien les problèmes apparents et les problèmes de performances apparaissent souvent très tard dans le cycle de vie et entraîne des interventions des DBA. Néanmoins, la montée en charge future d’ une application peut être prévu très tôt par le respect de normes.

Qu’apporte SQL Serveur 2005 dans la résolution des problèmes SQL ?

Je dois avouer que les ingénieurs de Microsoft ont fait un travail remarquable dans l’interrogation des données ( T-SQL ) pour la version 2005.

La première révolution, c’est la gestion de la récursivité dans les tables hiérarchiques. Un problème, hier, complexe qui impliquait l’utilisation d’un langage de programmation, la connaissance de la récursivité en .net par exemple ou l’utilisation d’une organisation intervallaire ( voir l’article remarquable de sql pro sur ce sujet : http://sqlpro.developpez.com/cours/arborescence/ )
Aujourd’hui, grace aux CTE ( Common Table Expression ), on peut gérer des arbres hierarchiques simplement dans une requête.

La deuxième révolution, c’est les fonctions de fenetrage et de classement. Un problème résolu sous oracle depuis la version 8 qui trouve enfin sa solution chez microsoft. La question qui est résolu est la suivante :
Vous avez une université composé de modules, les modules sont composés de TD, les TD sont remplis d’élèves noté par un professeur.
Pour chaque module de l’université, vous voulez connaitre le nom des 3 premiers lauréat de chaque TD. Seul les fonctions de classement ROW_NUMBER, RANK(), PARTITION BY permettent de gérer ce problème.

Que signifie le terme SQL Dynamique sous SQL Server ?

Chaque développeur confirmé ou DBA connaît la définition et l’ usage du SQL Dynamique mais une personne qui découvre les bases de données ne saura pas nécessairement ce que signifie ce terme surtout que l’ aide en ligne de SQL Server ne fournit pas de définition du concept et que très peu d’ auteurs ont trouvé utile de préciser ce concept, spécifiquement pour SQL Server, sur le web.

Lire la suite