EŞANLAMLI (Transact-SQL) oluştur
Yeni bir eş oluşturur.
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.schema Belirtilmezse, SQL Server kullandığı varsayılan şeması, geçerli bir kullanıcı.synonym_name
Yeni eş addır.server_name
temel nesne bulunduğu sunucunun adıdır.database_name
temel nesne bulunduğu veritabanı adıdır.database_name Belirtilmezse, geçerli veritabanının adı kullanılır.schema_name_2
temel nesneşema addır.schema_name Geçerli kullanıcının varsayılan şema kullanılan belirtilmemiş.object_name
Eşanlamlı başvuran temel nesne adıdır.
Açıklamalar
temel nesne eşanlamlı varolmaması saatoluşturun.SQL Serverçalıştırma saat temel nesne varlığını denetler.
Aşağıdaki nesne türlerini eşanlamlıları oluşturulabilir:
Derleme (clr) saklı yordamı |
Derleme (clr) tablo değerli fonksiyon |
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çitablo-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
işlev temel nesneler için dört adları desteklenmez.
Eşanlamlıları oluşturulabilir, bırakılan ve dinamik SQLiçinde başvurulan.
İzinler
Verilen şemada veri türünün eşanlamlısı oluşturmak için bir kullanıcı EŞANLAMLI oluşturma izninizin olması gerekir ve ya da şema veya sahip alter schema iznine sahip.
EŞANLAMLI oluşturma izni grantable izni yok.
Not
temel nesne denetimini tüm izninin saatertelenmiş çünkü EŞANLAMLI oluşturma deyimbaşarıyla derlemek için temel nesne üzerinde izni gerekmez.
Örnekler
A.Yerel bir nesne için bir Eşanlamlı oluşturma
Aşağıdaki örnek temel nesneeşanlamlısı ilk oluşturur Product , AdventureWorks2008R2 veritabanı ve daha sonra sorgular veri türünün eşanlamlısı.
USE tempdb;
GO
-- Create a synonym for the Product table in AdventureWorks2008R2.
CREATE SYNONYM MyProduct
FOR AdventureWorks2008R2.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.AdventureWorks2008R2.HumanResources.Employee;
GO
C.Kullanıcı tanımlı bir işleviçin bir Eşanlamlı oluşturma
Aşağıdaki örnek adında bir işlev oluşturur dbo.OrderDozen artar, sipariş miktarları ile bile düzine bir birim.Eşanlamlı sonra örnek oluşturur dbo.CorrectOrder için dbo.OrderDozen işlev.
-- 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
Ayrıca bkz.