BUAT SINONIM (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Membuat sinonim baru.

Konvensi sintaks transact-SQL

Sintaks

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

Sintaks Azure SQL Database:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

schema_name_1

Menentukan skema tempat sinonim dibuat. Jika schema_name tidak ditentukan, SQL Server menggunakan skema default pengguna saat ini.

synonym_name

Nama sinonim baru.

server_name

Nama server tempat objek dasar berada.

database_name

Nama database tempat objek dasar berada. Jika database_name tidak ditentukan, nama database saat ini akan digunakan.

schema_name_2

Nama skema objek dasar. Jika schema_name tidak ditentukan, skema default pengguna saat ini digunakan.

object_name

Nama objek dasar yang dirujuk sinonim.

Catatan

Azure SQL Database mendukung format database_name.[schema_name].object_name nama tiga bagian saat database_name adalah database saat ini, atau database_name adalah tempdb dan object_name dimulai dengan #.

Keterangan

Objek dasar tidak perlu ada pada waktu pembuatan sinonim. SQL Server memeriksa keberadaan objek dasar pada waktu proses.

  • Sinonim dapat dibuat untuk jenis objek berikut:

    • Prosedur tersimpan Assembly (CLR)
    • Fungsi bernilai tabel Assembly (CLR)
    • Fungsi skalar assembly (CLR)
    • Fungsi agregat Assembly (CLR)
    • Prosedur filter replikasi
    • Prosedur tersimpan yang diperluas
    • Fungsi skalar T-SQL
    • Fungsi bernilai tabel T-SQL
    • Fungsi bernilai tabel sebaris T-SQL
    • Prosedur tersimpan T-SQL
    • Tabel (ditentukan pengguna, termasuk tabel sementara lokal dan global)
    • Tampilkan
  • Nama empat bagian untuk objek dasar fungsi tidak didukung.

  • Sinonim dapat dibuat, dihilangkan, dan direferensikan dalam T-SQL dinamis.

  • Sinonim bersifat khusus database, dan tidak dapat diakses oleh database lain.

Izin

Untuk membuat sinonim dalam skema tertentu, pengguna harus memiliki CREATE SYNONYM izin dan memiliki skema atau memiliki izin ALTER SCHEMA.

Izin CREATE SYNONYM adalah izin yang dapat diberikan.

Catatan

Anda tidak memerlukan izin pada objek dasar untuk berhasil mengkompilasi CREATE SYNONYM pernyataan, karena semua pemeriksaan izin pada objek dasar ditangguhkan hingga run time.

Contoh

J. Membuat sinonim untuk objek lokal

Contoh berikut pertama-tama membuat sinonim untuk objek dasar, Product dalam AdventureWorks2022 database, lalu mengkueri sinonim.

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

Berikut adalah hasil yang ditetapkan.

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

(4 row(s) affected)

B. Membuat sinonim ke objek jarak jauh

Dalam contoh berikut, objek dasar, Contact, berada di server jarak jauh bernama Server_Remote.

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

C. Membuat sinonim untuk fungsi yang ditentukan pengguna

Contoh berikut membuat fungsi bernama dbo.OrderDozen yang meningkatkan jumlah pesanan menjadi 12 unit. Contoh kemudian membuat sinonim dbo.CorrectOrder untuk fungsi tersebut 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;

Baca juga

Langkah berikutnya