Je souhaitai depuis mal de temps tester l’outil SQL Prompt de la société Red Gate.
Avec mon titre de MVP SQL Server je peux maintenant le tester complètement et sans limites 🙂 (Merci au MVP Program).
Après 1 mois d’utilisation (version 5.3.8.2 Professional Edition), voici mon retour.
Présentation de l’outil
SQL Prompt est un add-in pour SQL Server Management Studio (SSMS) et Visual Studio (VSS). Il permet entre autres de gérer la complétion, formater et nettoyer vos codes T-SQL, naviguer plus simplement dans vos longs scripts, de créer des Snippet ou encore de Refactorer…
La documentation : http://documentation.red-gate.com/display/SP53/SQL+Prompt+5.3+documentation
Détail des caractéristiques par versions : Feature matrix
Quelques témoignages : Testimonials
Pour l’essayer pendant 14 jours : http://www.red-gate.com/products/sql-development/sql-prompt/download
Mes remarques
Après l’installation, un nouvel onglet apparait dans SSMS :
J’ai particulièrement aimé :
- Quelques raccourcis sympas :
– Si l’on écrit SSF + {TAB} -> SELECT * FROM
– Si l’on écrit ST + 100 -> SELECT TOP 100 * FROM
– Si l’on écrit INSERT INTO {Table} ->
- De pouvoir désactiver SQL Prompt facilement à partir du menu «Enable code suggestions»
Il est préférable de désactiver les options suivantes de SSMS si SQL Prompt activé :
- De pouvoir créer son propre style et de le partager à toutes ses équipes :
- La création d’Alias automatiques (Attention l’option est case sensitive)
- La complétion qui est bien plus puissante que celle d’Intellisense
- L’inspection permet de trouver des variables non utilisées comme celles qui sont créées mais pas initialisées ou encore celles créées et initialisées, mais qui ne sont jamais utilisées
- Le formatage et le nettoyage de codes, ajout des schémas à chaque nom de table et qualification des colonnes [Schema].[Table].[TableName]
- L’option « Summurize Script » permet de naviguer plus facilement dans un long script (le script doit être formaté préalablement)
- Certains outils expérimentaux comme l’Automatic Refresh Suggestion qui permet d’actualiser automatiquement la liste de suggestion lors d’un changement sur une base de données. L’option ralentit un peu l’éditeur, mais évite les “Refresh Suggestions” (CTRL+SHIFT+D)
SQL Prompt Snippets :
Vous pouvez créer des raccourcis à partir du Snippet Manager :
Remarques :
– Le paramètre $CURSOR$ indique l’endroit ou sera le curseur d’édition
– Pensez a mettre un “;” a la fin de votre code
– Lorsqu’une Snippet est paramétrée, la commande CTRL+SHIFT+M permet de la compléter
– Raccourci de Template Explorer : CTRL+ALT+T
– Il est possible de générer les Snippets à partir des templates SSMS présents dans le dossier « C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SqlWorkbenchProjectItems\Sql » (Snippets Gen)
Exemple : Création d’un Snippet de création d’index non-cluster à partir du Template SSMS « Create Unique Nonclustered Index »
CREATE UNIQUE NONCLUSTERED INDEX <index_name,sysname,AK_EmployeeAddress_rowguid> ON <schema_name,sysname,HumanResources>.<table_name,sysname,EmployeeAddress> ( <column_name,sysname,rowguid> ASC ) WITH ( SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF ) ON <file_group,,[PRIMARY]> GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<description_index,string,Description of index>' , @level0type=N'SCHEMA', @level0name=N'<schema_name,sysname,HumanResources>', @level1type=N'TABLE', @level1name=N'<table_name,sysname,EmployeeAddress>', @level2type=N'INDEX', @level2name=N'<index_name,sysname,AK_EmployeeAddress_rowguid>' GO
Maintenant lorsque j’écris « CUNI »+[TAB] et CTRL+SHIFT+M je peux paramétrer le nouvel index, les propriétés étendues seront automatiquement renseignées 😉
Les Snippets peuvent faire gagner énormément de temps, moyennant un peu de travail en amont !
SQL Prompt Refactoring :
- Smart Rename : Renaming an object
- Qualify Object Names : Qualifying object names
- Uppercase Keywords : Uppercasing keywords
- Expand Wildcards : Expanding wildcards
- Split Table : Splitting a table
- Encapsulate as New Stored Procedure : Encapsulating SQL as a new stored procedure
- Find Unused Variables and Parameters : Finding unused variables and parameters
- Summarize Script : Summarizing a script
- Uppercase Keywords : Uppercasing keywords
Le split de table est intéressant : imaginons une table ayant un ID de type INT, plusieurs colonnes XML et plusieurs NVARCHAR. La requête suivante permet de connaitre le nombre de 8kb pages utilisés par la table.
DBCC IND ('database', 'table', -1)
Il est donc intéressant de pouvoir splitter des tables. Dans notre cas rapatrié l’ID, déplacer les colonnes de type XML dans une nouvelle table et enfin créer une vue pourrait diminuer les temps de recherche.
Exemple de création d’un Template :
Dans le Template Explorer (CTRL+ALT+T), créer un nouveau Dossier puis un nouveau Template et ajouter le code suivant :
SELECT '<Nom, Nom, Groupe des Utilisateurs francophones de Microsoft SQL Server>' as <Diminutif, Diminutif, GUSS>
Avec le raccourci clavier CTRL+SHIFT+M vous pouvez l’essayer 😉
Concurrents
Il existe d’autres produits concurrentiels sur le marché qui offrent des fonctionnalités similaires, en voici une petite liste :
- SQL Server Intellisense : Utilitaire incorporé à SSMS, il a le mérité d’existé 😉 Raccourci à connaitre CTRL+SHIFT+R
- dbForge SQL Complete : Je pense le tester bientôt
- SSMS Tools Pack de Mladen Prajdić MVP SQL Server
- SQL Assist
- …
Conclusion
Outre le fait qu’il permet à toutes vos équipes d’avoir un code indenté, standardisé et lisible, il permet un gain de temps quotidien pour l’écriture de requêtes T-SQL.
Il serait intéressant de compléter les outils de SQL Prompt, notamment en rajoutant à l’outil de recherche la possibilité de créer un Script de modification suivant la sélection 😉
Bonus : Quick Reference
[gview file= »http://assets.red-gate.com/products/sql-development/sql-prompt/assets/sql-prompt-quick-reference.pdf » save= »0″]
Merci pour cette revue complète.
Toutefois, en tant que consultant, je dois faire avec ce qui se trouve chez le client, et le dénominateur commun, c’est SSMS (voire SQLCMD chez les puristes).
Et avec ton article, je connais enfin le CTRL+SHIT+R 🙂