Aracılığıyla paylaş


EŞANLAMLI YARAT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Yeni bir eş anlamlı oluşturur.

Transact-SQL söz dizimi kuralları

Sözdizimi

SQL Server söz dizimi:

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 and SQL database in 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

Eş anlamlının oluşturulduğu şemayı belirtir. schema_name belirtilmezse, SQL Server geçerli kullanıcının varsayılan şemasını kullanır.

synonym_name

Yeni eş anlamlının adı.

server_name

Temel nesnenin bulunduğu sunucunun adı.

database_name

Temel nesnenin bulunduğu veritabanının adı. database_name belirtilmezse geçerli veritabanının adı kullanılır.

schema_name_2

Temel nesnenin şemasının adı. schema_name belirtilmezse, geçerli kullanıcının varsayılan şeması kullanılır.

object_name

Eş anlamlının başvurduğunu temel nesnenin adı.

Uyarı

Microsoft Fabric'teki Azure SQL Veritabanı ve SQL veritabanı, database_name.[schema_name].object_name mevcut veritabanı olduğunda veya database_name ise ve tempdb ile başladığında üç bölümlü isim formatını # destekler.

Açıklamalar

Temel nesnenin eş anlamlı oluşturma zamanında mevcut olması gerekmez. SQL Server, çalışma zamanında temel nesnenin varlığını denetler.

  • Aşağıdaki nesne türleri için eş anlamlılar oluşturulabilir:

    • Derleme (CLR) saklı yordamı
    • Derleme (CLR) tablo değerli işlevi
    • Derleme (CLR) skaler işlevi
    • Derleme (CLR) toplama işlevleri
    • Çoğaltma filtresi yordamı
    • Genişletilmiş saklı yordam
    • T-SQL skaler işlevi
    • T-SQL tablo değerli işlevi
    • T-SQL satır içi tablo değerli işlevi
    • T-SQL saklı yordamı
    • Tablo (kullanıcı tanımlı, yerel ve genel geçici tabloları içerir)
    • View
  • İşlev temel nesneleri için dört bölümlü adlar desteklenmez.

  • Dinamik T-SQL'de eş anlamlılar oluşturulabilir, bırakılabilir ve bunlara başvurulabilir.

  • Eş anlamlılar veritabanına özgü olup diğer veritabanları tarafından erişilemiyor.

Permissions

Belirli bir şemada eş anlamlı oluşturmak için kullanıcının izni ve CREATE SYNONYM şemaya sahip olması veya izni olması gerekir ALTER SCHEMA .

İzin CREATE SYNONYM , izin verilebilen bir izindir.

Uyarı

Temel nesnedeki tüm izin denetimi çalışma zamanına kadar ertelendiğinden, deyimi başarıyla derlemek CREATE SYNONYM için temel nesne üzerinde izne ihtiyacınız yoktur.

Örnekler

A. Yerel nesne için eş anlamlı oluşturma

Aşağıdaki örnek önce veritabanında temel nesne ProductAdventureWorks2025 için bir eş anlamlı oluşturur ve ardından eş anlamlıyı sorgular.

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

Sonuç kümesi aşağıdadır.

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

(4 row(s) affected)

B. Uzak nesneyle eş anlamlı oluşturma

Aşağıdaki örnekte, temel nesnesi Contactadlı Server_Remoteuzak sunucuda bulunur.

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

C. Kullanıcı tanımlı bir işlev için eş anlamlı oluşturma

Aşağıdaki örnek, sipariş tutarlarını 12 birim olarak artıran adlı dbo.OrderDozen bir işlev oluşturur. Örnek daha sonra işlevin eş dbo.CorrectOrder anlamlısını dbo.OrderDozen oluşturur.

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

Sonraki adım