CREATE SYNONYM (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
Crée un synonyme.
Conventions de la syntaxe Transact-SQL
Syntaxe
Syntaxe SQL Server :
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>
<object> ::=
{
[
server_name. [ database_name ] . [ schema_name_2 ] .
| database_name. [ schema_name_2 ] .
| schema_name_2.
]
object_name
}
Syntaxe Azure SQL Database :
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>
<object> ::=
{
[ database_name. [ schema_name_2 ] . | schema_name_2. ] object_name
}
Arguments
schema_name_1
Spécifie le schéma dans lequel est créé le synonyme. Si la valeur schema_name n’est pas spécifiée, SQL Server utilise le schéma par défaut de l’utilisateur actif.
synonym_name
Nom du nouveau synonyme.
server_name
Nom du serveur contenant l’objet de base.
database_name
Nom de la base de données contenant l’objet de base. Si la valeur database_name n’est pas spécifiée, le nom de la base de données active est utilisé.
schema_name_2
Nom du schéma de l’objet de base. Si la valeur schema_name n’est pas spécifiée, le schéma par défaut de l’utilisateur actuel est utilisé.
object_name
Nom de l’objet de base référencé par le synonyme.
Notes
Azure SQL Database prend en charge le format database_name.[schema_name].object_name
de nom en trois parties quand database_name est la base de données active ou quand database_name est tempdb
et que object_name commence par #
.
Notes
L'objet de base ne doit pas exister lors de la création du synonyme. SQL Server vérifie l'existence de l'objet de base au cours de l'exécution.
Vous pouvez créer des synonymes pour les types d'objets suivants :
- Procédure stockée d'un assembly (CLR)
- Fonction table d'un assembly (CLR)
- Fonction scalaire d'un assembly (CLR)
- Fonctions d'agrégation d'un assembly (CLR)
- Procédure de réplication et de filtrage
- Procédure stockée étendue
- Fonction scalaire T-SQL
- Fonction table T-SQL
- Fonction table inlined SQL
- Procédure stockée T-SQL
- Table (définie par l’utilisateur, inclut des tables temporaires locales et globales)
- Affichage
Les noms en quatre parties des objets de base de fonction ne sont pas pris en charge.
Vous pouvez créer, supprimer et référencer des synonymes dans des instructions T-SQL dynamiques.
Les synonymes sont propres à la base de données et ne sont pas accessibles à d’autres bases de données.
Autorisations
Pour créer un synonyme dans un schéma donné, un utilisateur doit disposer de l’autorisation CREATE SYNONYM
et posséder le schéma ou bénéficier de l’autorisation ALTER SCHEMA.
L’autorisation CREATE SYNONYM
est octroyable.
Notes
Vous n’avez pas besoin d’une autorisation sur un objet de base pour réussir une compilation de l’instruction CREATE SYNONYM
, car toute vérification d’autorisation sur l’objet de base est reportée jusqu’à l’exécution.
Exemples
R. Créer un synonyme pour un objet local
L'exemple suivant crée d'abord un synonyme pour l'objet de base, Product
dans la base de données AdventureWorks2022
, puis il interroge le synonyme.
-- Create a synonym for the Product table in AdventureWorks2022.
CREATE SYNONYM MyProduct
FOR AdventureWorks2022.Production.Product;
GO
-- Query the Product table by using the synonym.
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
Voici le jeu de résultats obtenu.
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 row(s) affected)
B. Créer un synonyme pour un objet distant
Dans l'exemple suivant, l'objet de base Contact
se trouve sur un serveur distant appelé Server_Remote
.
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2022.HumanResources.Employee;
GO
C. Créer un synonyme pour une fonction définie par l'utilisateur
L'exemple suivant crée une fonction nommée dbo.OrderDozen
qui augmente des quantités de commandes pour obtenir 12 unités. L'exemple crée ensuite le synonyme dbo.CorrectOrder
pour la fonction dbo.OrderDozen
.
-- Creating the dbo.OrderDozen function
CREATE FUNCTION dbo.OrderDozen (@OrderAmt INT)
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
IF @OrderAmt % 12 <> 0
BEGIN
SET @OrderAmt += 12 - (@OrderAmt % 12)
END
RETURN (@OrderAmt);
END;
GO
-- Using the dbo.OrderDozen function
DECLARE @Amt INT;
SET @Amt = 15;
SELECT @Amt AS OriginalOrder,
dbo.OrderDozen(@Amt) AS ModifiedOrder;
-- Create a synonym dbo.CorrectOrder for the dbo.OrderDozen function.
CREATE SYNONYM dbo.CorrectOrder
FOR dbo.OrderDozen;
GO
-- Using the dbo.CorrectOrder synonym.
DECLARE @Amt INT;
SET @Amt = 15;
SELECT
@Amt AS OriginalOrder,
dbo.CorrectOrder(@Amt) AS ModifiedOrder;
Voir aussi
- DROP SYNONYM (Transact-SQL)
- EVENTDATA (Transact-SQL)
- GRANT (Transact-SQL)
- Synonymes (Moteur de base de données)