Utilisation des synonymes en SQL Server 2005 Convertir en PDF Version imprimable Suggérer par mail

Les utilisateurs de SQL Server sont depuis longtemps habitués à utiliser les noms entièrement qualifiés [[[serveur.][base de données].][nom de la table].]nom_object, par exemple :

  • Mon_Serveur.AdventureWorks.Production.ProductCategory
  • AdventureWorks.Production.ProductCategory
  • AdventureWorks..ProductCategory
  • ProductCategory

Cette syntaxe devient lourde lorsque les noms de tables et de vues doivent être tous deux entièrement qualifiés.

Vous pouvez remédier à ce problème en attribuant à la table un nom de corrélation, aussi appelé variable de plage ou alias, à l'aide du mot clé AS de la clause FROM. Dans ce cas, le nom de la table ou de la vue entièrement qualifiée ne doit figurer que dans la clause FROM.

 

Mais que ce se passe t’il si on est obligé d’utiliser le nom complet ou si on ne connait pas à l’avance le nom du serveur et/ou de la base de donnée (la nomenclature peut changer entre les environnements de test, qualification et production) ?

 

On peut, bien sur utiliser la technique classique de la concaténation de texte :

  • SELECT @Sql ='SELECT fields FROM ' + @dbname +'.Table'
  • EXEC() ou sp_executesql pour exécuter la string sql.

Cette solution est néanmoins dangereuse car il est possible d’injecter du code qui peut compromettre la sécurité du système.

 

SQL Server 2005 offre une vraie solution à ce genre de problème car cette version permet de définir des synonymes : un nom simple qui peut remplacer un nom entièrement qualifié (en une, deux, trois ou quatre parties).

Cette solution offre les avantages suivants :

  • Economie du code à saisir.
  • Noms plus adaptés aux exigences de l’application plutôt qu’a celui du DBA
  • Niveau d’abstraction entre les noms physiques (nom du serveur, tables, etc.) et les noms logiques

La syntaxe de création d’un synonyme est la suivante :

  • CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >

Les synonymes sont limités aux objets suivants :

  • Tables
  • Vue
  • Procédures stockes
  • Procédures stockes CLR
  • Fonctions CLR
  • Procédures de filtre de Replication
  • Procédures stockes étendues
  • Fonctions SQL scalaires, table-valued, et inline table-valued

Les synonymes peuvent être utilisés dans les instructions suivantes :

  • SELECT
  • sub-selects
  • UPDATE
  • INSERT
  • DELETE
  • EXECUTE

Attention : on ne peut pas utiliser de synonymes pour les instructions de type DDL !

 

Attention : à ne pas supprimer un synonyme sans avoir vérifié au préalable qu’il n’est plus utilisé dans toute l’application car SQL n’effectue aucune vérification (late binding !).

 

Si vous avez d'autres quesitons,  n'hésitez pas à en parler sur le forum SQL Server .

 

 
< Précédent   Suivant >
Joomla Template by Joomlashack
Joomla Templates by JoomlaShack Joomla Templates