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'2014-02-20 17:02:39'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 FilesMicrosoft SQL Server100ToolsBinnVSShellCommon7IDESqlWorkbenchProjectItemsSql" (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

Et maintenant lorsque j''écris "CUNI"+[TAB] et CTRL+SHIFT+M je peux paramétrer mon nouveau cluster, 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 :

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 😉

Si vous avez des suggestions sur l''outil : http://redgate.uservoice.com/forums/94413-sql-prompt-feature-suggestions

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.