BUAT SINONIM (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Membuat sinonim baru.
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
}
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)
- Tampilan
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 set hasilnya.
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;