synonym (Transact-sql) oluştur
Yeni eş oluşturur.
Transact-SQL Sözdizim Kuralları
Sözdizimi
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
}
Bağımsız değişkenler
schema_name_1
Eşanlamlı oluşturulduğu şema belirtir. Eğer schemabelirtilmemiş, SQL Servergeçerli kullanıcı varsayılan şema kullanır.synonym_name
Yeni eş addır.server_name
Sunucu adı hangi temel nesne üzerinde yer almaktadır.database_name
Temel nesne bulunduğu veritabanı adıdır. Eğer database_namebelirtilmemişse, geçerli veritabanı adını kullanılır.schema_name_2
Temel nesne şema addır. Eğer schema_namegeçerli kullanıcı varsayılan şema kullanılan belirtilmemiş.object_name
Eşanlamlı başvuran temel nesne addır.
Açıklamalar
Temel nesne eşanlamlı yok zaman oluşturmak. SQL Serverçalışma zamanında temel nesnenin varlığını denetler.
Aşağıdaki nesne türlerini eşanlamlıları oluşturulabilir:
Derleme (clr) depolanan yordamı |
Derleme (clr) tablo değerli işlev |
Derleme (clr) skalar fonksiyon |
Derleme toplama (clr) toplama işlevleri |
Çoğaltma filtre yordamı |
Genişletilmiş saklı yordam |
sql skalar fonksiyon |
sql tablo değerli fonksiyon |
sql satır içi tablo değerli işlev |
sql saklı yordamı |
Görünüm |
Tablo1 (kullanıcı tanımlı) |
1 Yerel ve genel geçici tablolar içerir
İşlevi temel nesneler için four-part adları desteklenmez.
Eşanlamlıları oluşturulabilir, düştü ve dinamik sql içinde başvurulan.
İzinler
Verilen şemada eşanlamlısı oluşturmak için bir kullanıcının create synonym izni olmalıdır ve ya da kendi şema veya var şema alter izni.
create synonym izni grantable izni yok.
[!NOT]
Temel nesne üzerinde denetleme tüm izni çalıştırma kadar ertelenmiş çünkü başarıyla synonym create deyimi derlemek için temel nesne izni gerekmez.
Örnekler
A.Yerel bir nesne için bir eşanlamlı oluşturma
Aşağıdaki örnek, ilk kez bir eşanlamlı temel nesne oluşturur Productde AdventureWorks2012veritabanı ve eşanlamlı sorgular.
USE tempdb;
GO
-- 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.
USE tempdb;
GO
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
USE tempdb;
GO
-- 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.
USE tempdb;
GO
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO
Sonuç kümesi buradadır.
-----------------------
ProductID Name
----------- --------------------------
1 Adjustable Race
2 Bearing Ball
3 BB Ball Bearing
4 Headset Ball Bearings
(4 row(s) affected)
B.Uzak nesne için bir eşanlamlı oluşturma
Aşağıdaki örnekte, temel nesne, Contact, adlı bir uzak sunucuda bulunan Server_Remote.
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.HumanResources.Employee;
GO
EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2012.HumanResources.Employee;
GO
C.Kullanıcı tanımlı bir işlev için bir eşanlamlı oluşturma
Aşağıdaki örnek adında bir işlev oluşturur dbo.OrderDozensipariş miktarlarının bile düzine birimlerine artıracağını. Eşanlamlı sonra örnek oluşturur dbo.CorrectOrderiçin dbo.OrderDozenişlevi.
-- 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
-- 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