BUAT SINONIM (Transact-SQL)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Database
Membuat sinonim baru.
Sintaks
-- 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 Syntax
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 dan 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
Adalah nama sinonim baru.
server_name
Berlaku untuk: SQL Server 2008 dan yang lebih baru.
Adalah nama server tempat objek dasar berada.
database_name
Adalah nama database tempat objek dasar berada. Jika database_name tidak ditentukan, nama database saat ini digunakan.
schema_name_2
Adalah nama skema objek dasar. Jika schema_name tidak ditentukan, skema default pengguna saat ini digunakan.
object_name
Adalah nama objek dasar yang dirujuk sinonim.
Azure SQL Database mendukung format database_name.[schema_name].object_name nama tiga bagian ketika 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 durasi.
Sinonim dapat dibuat untuk jenis objek berikut:
- Prosedur Tersimpan Assembly (CLR)
- Fungsi Bernilai tabel Assembly (CLR)
- Fungsi Skalar Assembly (CLR)
- Fungsi Agregat Assembly Aggregate (CLR)
- Prosedur filter replikasi
- Prosedur Tersimpan diperpanjang
- Fungsi Skalar SQL
- Fungsi bernilai Tabel SQL
- Fungsi bernilai tabel sebaris SQL
- Prosedur Tersimpan SQL
- Tabel1 (Ditentukan pengguna)
- Tampilan
1 Menyertakan tabel sementara lokal dan global
Nama empat bagian untuk objek dasar fungsi tidak didukung.
Sinonim dapat dibuat, dihilangkan, dan direferensikan dalam SQL dinamis.
Catatan
Sinonim bersifat khusus database dan tidak dapat diakses oleh database lain.
Izin
Untuk membuat sinonim dalam skema tertentu, pengguna harus memiliki izin CREATE SYNONYM 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 mengompilasi pernyataan CREATE SYNONYM, karena semua pemeriksaan izin pada objek dasar ditangguhkan hingga durasi.
Contoh
A. Membuat sinonim untuk objek lokal
Contoh berikut pertama-tama membuat sinonim untuk objek dasar, Product dalam AdventureWorks2012 database, lalu mengkueri sinonim.
-- Create a synonym for the Product table in AdventureWorks2012.
CREATE SYNONYM MyProduct
FOR AdventureWorks2012.Production.Product;
GO
-- Query the Product table by using the synonym.
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
Berikut adalah tataan hasil.
-----------------------
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.
Berlaku untuk: SQL Server 2008 dan yang lebih baru.
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.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. Contohnya 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;
