Aller au contenu | Aller au menu | Aller à la recherche

Sql Server: Les synonymes.

sql-server-2008





Voici un concept que j'ai appris récemment mais qui m'aurait bien dépanné lors de ma précédente mission.

A quoi cela peut il bien servir.

Tout le monde travaillant sous sql server connait bien la syntaxe d'accès à une table: [BASE].SCHEMA.[TABLE].
Un synonyme dans sql server se propose de remplacer entièrement le nom de la table par un nom que vous pourrez choisir arbitrairement.

La ou ils deviennent indispensables c'est lorsque vous devez accéder à des bases identiques sur des serveurs distants différents.

Dans une procédure stockée vous pouvez créer le synonyme d'accès à la table sur un des serveurs joints par exemples, puis réutiliser la même procédure pour l'exécuter sur une base située sur un autre serveur. Cela vous dispense alors de la création de requêtes dynamiques.

Exemple.

L'exemple suivant est extrait d'une procédure stockée dans laquelle le synonyme est créé dynamiquement avec le passage du nom de la base à travers une variable.

-- Create synonyms.
DECLARE @synonyme VARCHAR(100), @DatabaseName VARCHAR(100)
SET @DatabaseName='Database1'
--First verify if synonym exist:
IF EXISTS (SELECT 1 FROM sysobjects where name='myConference') DROP SYNONYM myConference

IF EXISTS (SELECT 1 FROM sysobjects where name='myReservation') DROP SYNONYM myReservation
IF EXISTS (SELECT 1 FROM sysobjects where name='myClient') DROP SYNONYM myClient
IF EXISTS (SELECT 1 FROM sysobjects where name='myCompany') DROP SYNONYM myCompany
SET @synonyme='CREATE SYNONYM myConference FOR '+@DatabaseName+'.[dbo].Conference'
EXEC(@synonyme)
SET @synonyme='CREATE SYNONYM myReservation FOR '+@DatabaseName+'.[dbo].Reservation'
EXEC(@synonyme)
SET @synonyme='CREATE SYNONYM myClient FOR '+@DatabaseName+'.[dbo].Client'
EXEC(@synonyme)
SET @synonyme='CREATE SYNONYM myCompany FOR '+@DatabaseName+'.[dbo].Company'
EXEC(@synonyme)

Commentaires

1. Le dimanche, août 1 2010, 00:27 par Modele

cela vous dispense alors de la creation de requetes dynamiques -> intéresant tout ça :D

Ajouter un commentaire

Les commentaires peuvent être formatés en utilisant une syntaxe wiki simplifiée.

Fil des commentaires de ce billet