BUAT SINONIM (Transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database

Membuat sinonim baru.

Topic link iconKonvensi Sintaksis T-SQL

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;  

Lihat juga

Langkah berikutnya