Top

SQL Prompt

 

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

SQLPROMPT_GALLERY SQLPROMPT_VIDEO

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 :

SQL_PROMPT

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} ->
    SQL_PROMPT_DISPLAY
  • De pouvoir désactiver SQL Prompt facilement à partir du menu «Enable code suggestions»
    SQL_PROMPT_OPTIONS
    Il est préférable de désactiver les options suivantes de SSMS si SQL Prompt activé :
    SQL_SERVER_OPTIONS
  • De pouvoir créer son propre style et de le partager à toutes ses équipes :
    SQL_PROMPT_STYLES
  • La création d’Alias automatiques (Attention l’option est case sensitive)
    SQL_PROMPT_ALIASES
  • 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)
    SQL_PROMPT_SUMMARIZE
  • 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_Experimental_Features
SQL Prompt Snippets :

Vous pouvez créer des raccourcis à partir du Snippet Manager :

SQL_PROMPT_SNIPPET

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
SQL_PROMPT_TEMPLATE
– 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

SQL_PROMPT_CREATE_SNIPPET

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 😉

SQL_PROMPT_PARM_SNIPPET

Les Snippets peuvent faire gagner énormément de temps, moyennant un peu de travail en amont !

 

SQL Prompt Refactoring :

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)

Plus le nombre de pages utilisées sera grand et plus le temps de recherche sur la table sera long. Il faut donc avoir le plus de lignes par pages !

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 :

 

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

 

Je ne suis pas employé ni payé par Red Gate, je suis juste un client qui a testé et utilisé une ou plusieurs fonctionnalités du produit. Merci de faire vos propres recherches et avis sur les produits ;-)

 

1 Comment

  • Djeepy1 Says

    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 🙂

Ajouter un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Suivre

Recevez par courrier les nouveaux articles.

Joignez-vous aux followers:

%d blogueurs aiment cette page :