Sdílet prostřednictvím


VYTVOŘIT SYNONYMUM (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Vytvoří nové synonymum.

Transact-SQL konvence syntaxe

Syntaxe

Syntaxe SQL Serveru:

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
}

Azure SQL Database a SQL databáze v Microsoft Fabric syntax:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

<object> ::=
{
    [ database_name. [ schema_name_2 ] . | schema_name_2. ] object_name
}

Arguments

schema_name_1

Určuje schéma, ve kterém se synonymum vytvoří. Pokud není zadaný schema_name , SQL Server použije výchozí schéma aktuálního uživatele.

synonym_name

Název nového synonyma

server_name

Název serveru, na kterém se nachází základní objekt.

database_name

Název databáze, ve které se nachází základní objekt. Pokud není zadaný database_name , použije se název aktuální databáze.

schema_name_2

Název schématu základního objektu. Pokud není zadaný schema_name , použije se výchozí schéma aktuálního uživatele.

object_name

Název základního objektu, na který odkazuje synonyma.

Poznámka:

Azure SQL Database a SQL databáze v Microsoft Fabric podporují tříčlenný formát database_name.[schema_name].object_name názvu, když je database_name aktuální databáze, nebo database_name je tempdb a object_name začíná na #.

Poznámky

Základní objekt nemusí existovat v době vytváření synonym. SQL Server kontroluje existenci základního objektu za běhu.

  • Synonyma lze vytvořit pro následující typy objektů:

    • Uložená procedura sestavení (CLR)
    • Funkce s hodnotami tabulky sestavení (CLR)
    • Skalární funkce sestavení (CLR)
    • Agregační funkce sestavení (CLR)
    • Postup filtrování replikace
    • Rozšířená uložená procedura
    • Skalární funkce T-SQL
    • Funkce T-SQL table-valued
    • Funkce T-SQL inline-table-valued
    • Uložená procedura T-SQL
    • Tabulka (uživatelem definovaná, zahrnuje místní a globální dočasné tabulky)
    • Zobrazit
  • Názvy čtyř částí pro základní objekty funkcí se nepodporují.

  • Synonyma lze vytvořit, vyhodit a odkazovat v dynamickém T-SQL.

  • Synonyma jsou specifická pro databázi a ostatní databáze k němu nemají přístup.

Povolení

Pokud chcete vytvořit synonymum v daném schématu, musí mít CREATE SYNONYM uživatel oprávnění a buď vlastní schéma, nebo má ALTER SCHEMA oprávnění.

Oprávnění CREATE SYNONYM je udělitelné oprávnění.

Poznámka:

K úspěšnému CREATE SYNONYM kompilaci příkazu nepotřebujete oprávnění k základnímu objektu, protože veškerá kontrola oprávnění základního objektu je odložena do doby běhu.

Examples

A. Vytvoření synonyma pro místní objekt

Následující příklad nejprve vytvoří synonymum pro základní objekt v ProductAdventureWorks2025 databázi a potom se dotazuje synonyma.

-- 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

Tady je soubor výsledků.

ProductID   Name
----------- --------------------------
1           Adjustable Race
2           Bearing Ball
3           BB Ball Bearing
4           Headset Ball Bearings

(4 row(s) affected)

B. Vytvoření synonyma pro vzdálený objekt

V následujícím příkladu se základní objekt Contactnachází na vzdáleném serveru s názvem Server_Remote.

EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2022.HumanResources.Employee;
GO

C. Vytvoření synonyma pro uživatelem definovanou funkci

Následující příklad vytvoří funkci s názvem dbo.OrderDozen , která zvyšuje množství objednávek na 12 jednotek. Příklad pak vytvoří synonymum dbo.CorrectOrder pro dbo.OrderDozen funkci.

-- 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;

Další krok