EŞANLAMLI (Transact-SQL) oluştur

Yeni bir eş oluşturur.

Konu bağlantısı simgesiTransact-SQL sözdizimi 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.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