Freigeben über


SYNONYM ERSTELLEN (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Erstellt ein neues Synonym.

Transact-SQL-Syntaxkonventionen

Syntax

SQL Server-Syntax:

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 und SQL-Datenbank in Microsoft Fabric Syntax:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

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

Argumente

schema_name_1

Gibt das Schema an, in dem das Synonym erstellt wird. Wenn schema_name nicht angegeben wird, verwendet SQL Server das Standardschema des aktuellen Benutzers bzw. der aktuellen Benutzerin.

synonym_name

Der Name des neuen Synonyms.

server_name

Der Name des Servers, auf dem sich das Basisobjekt befindet.

database_name

Der Name der Datenbank, auf der sich das Basisobjekt befindet. Wenn database_name nicht angegeben ist, wird der Name der aktuellen Datenbank verwendet.

schema_name_2

Der Name des Schemas des Basisobjekts. Wenn schema_name nicht angegeben ist, wird das Standardschema des aktuellen Benutzers bzw. der aktuellen Benutzerin verwendet.

object_name

Der Name des Basisobjekts, auf das das Synonym verweist.

Hinweis

Azure SQL Database und SQL-Datenbank in Microsoft Fabric unterstützt das dreiteilige Namensformat, database_name.[schema_name].object_name wenn das database_name die aktuelle Datenbank ist oder das database_name ist tempdb und das object_name mit #beginnt.

Bemerkungen

Das Basisobjekt muss zur Erstellungszeit des Synonyms nicht notwendigerweise vorhanden sein. SQL Server überprüft das Vorhandensein des Basisobjekts zur Laufzeit.

  • Synonyme können für die folgenden Objekttypen erstellt werden:

    • Gespeicherte Assemblyprozedur (CLR)
    • Assembly-Tabellenwertfunktion (CLR)
    • Assemblyskalarfunktion (CLR)
    • Assemblyaggregatfunktion (CLR)
    • Replikationsfilterprozedur
    • Erweiterte gespeicherte Prozedur
    • T-SQL-Skalarfunktion
    • T-SQL-Tabellenwertfunktion
    • T-SQL-Inline-Tabellenwertfunktion
    • Gespeicherte T-SQL-Prozedur
    • Tabelle (benutzerdefinierte, einschließlich lokaler und globaler temporärer Tabellen)
    • Sicht
  • Vierteilige Namen für Funktionsbasisobjekte werden nicht unterstützt.

  • In dynamischem T-SQL können Synonyme erstellt und gelöscht werden. Außerdem kann auf sie verwiesen werden.

  • Synonyme sind datenbankspezifisch, sodass andere Datenbanken nicht auf sie zugreifen können.

Berechtigungen

Um ein Synonym in einem bestimmten Schema zu erstellen, muss CREATE SYNONYM ein Benutzer über die Berechtigung verfügen und entweder das Schema besitzen oder über eine Berechtigung verfügen ALTER SCHEMA .

Die CREATE SYNONYM-Berechtigung ist eine erteilbare Berechtigung.

Hinweis

Sie benötigen keine Berechtigung für das Basisobjekt, um die CREATE SYNONYM-Anweisung erfolgreich auszuführen, da alle Berechtigungsüberprüfungen für das Basisobjekt bis zur Laufzeit verzögert werden.

Beispiele

A. Erstellen eines Synonyms für ein lokales Objekt

Im folgenden Beispiel wird zunächst ein Synonym für das Basisobjekt, Product in der AdventureWorks2025-Datenbank, erstellt und dann das Synonym abgefragt.

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

Hier sehen Sie das Ergebnis.

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

(4 row(s) affected)

B. Erstellen eines Synonyms für ein Remoteobjekt

Im folgenden Beispiel befindet sich das Basisobjekt, Contact, auf einem Remoteserver namens Server_Remote.

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

C. Erstellen eines Synonyms für eine benutzerdefinierte Funktion

Im folgenden Beispiel wird eine Funktion mit dem Namen dbo.OrderDozen erstellt, durch die Bestellmengen auf zwölf Einheiten erhöht werden. Im Beispiel wird dann das Synonym dbo.CorrectOrder für die dbo.OrderDozen-Funktion erstellt.

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

Nächster Schritt