CREATE SYNONYM (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Crea un nuovo sinonimo.

Convenzioni di 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
}

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

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

Questo è il set di risultati.

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

Passaggi successivi