CREATE SYNONYM (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Crea un nuovo sinonimo.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
Sintassi di 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
}
database SQL di Azure sintassi:
CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>
<object> ::=
{
[ database_name. [ schema_name_2 ] . | schema_name_2. ] object_name
}
Argomenti
schema_name_1
Specifica lo schema in cui viene creato il sinonimo. Se schema_name non è specificato, SQL Server usa lo schema predefinito dell'utente corrente.
synonym_name
Nome del nuovo sinonimo.
server_name
Nome del server in cui si trova l'oggetto di base.
database_name
Nome del database in cui si trova l'oggetto di base. Se non viene specificato database_name , viene usato il nome del database corrente.
schema_name_2
Nome dello schema dell'oggetto di base. Se schema_name non viene specificato, viene usato lo schema predefinito dell'utente corrente.
object_name
Nome dell'oggetto di base a cui fa riferimento il sinonimo.
Nota
database SQL di Azure supporta il formato database_name.[schema_name].object_name
del nome in tre parti quando il database_name è il database corrente oppure il database_name è tempdb
e il object_name inizia con #
.
Osservazioni:
Non è necessario che l'oggetto di base sia esistente in fase di creazione del sinonimo. SQL Server controlla l'esistenza dell'oggetto di base in fase di esecuzione.
È possibile creare sinonimi per i tipi di oggetti seguenti:
- Stored procedure assembly (CLR)
- Funzione con valori di tabella assembly (CLR)
- Funzione scalare assembly (CLR)
- Funzioni di aggregazione assembly (CLR)
- Procedura di filtro della replica
- Stored procedure estesa
- Funzione scalare T-SQL
- Funzione con valori di tabella T-SQL
- Funzione T-SQL inline-table-valued
- Stored procedure T-SQL
- Tabella (definita dall'utente, include tabelle temporanee locali e globali)
- Visualizza
I nomi in quattro parti per gli oggetti di base della funzione non sono supportati.
I sinonimi possono essere creati, eliminati e a cui si fa riferimento in T-SQL dinamico.
I sinonimi sono specifici del database e non possono essere accessibili da altri database.
Autorizzazioni
Per creare un sinonimo in uno schema specifico, un utente deve disporre CREATE SYNONYM
dell'autorizzazione e disporre dell'autorizzazione ALTER SCHEMA.
L'autorizzazione CREATE SYNONYM
è un'autorizzazione concessa.
Nota
Non è necessaria l'autorizzazione per l'oggetto di base per compilare correttamente l'istruzione CREATE SYNONYM
, perché tutto il controllo delle autorizzazioni per l'oggetto di base viene posticipato fino al runtime.
Esempi
R. Creare un sinonimo per un oggetto locale
Nell'esempio seguente viene prima creato un sinonimo per l'oggetto di base Product
nel database AdventureWorks2022
, quindi viene eseguita una query sul sinonimo.
-- 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
Il set di risultati è il seguente.
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 row(s) affected)
B. Creare un sinonimo per un oggetto remoto
Nell'esempio seguente, l'oggetto di base, Contact
, è contenuto in un server remoto denominato Server_Remote
.
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2022.HumanResources.Employee;
GO
C. Creare un sinonimo per una funzione definita dall'utente
L'esempio seguente crea una funzione denominata dbo.OrderDozen
che aumenta le quantità degli ordini a 12 unità. Viene quindi creato il sinonimo dbo.CorrectOrder
per la funzione 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;
Vedi anche
- DROP SYNONYM (Transact-SQL)
- EVENTDATA (Transact-SQL)
- GRANT (Transact-SQL)
- Sinonimi (Motore di database)