Share via


Eşanlamlılar (veritabanı altyapısı)

Eşanlamlı aşağıdaki amaçlara hizmet eden bir veritabanı nesnesidir:

  • Yerel veya uzak bir sunucuda bulunabilir temel nesne, denir, başka bir veritabanı nesnesi için diğer bir ad sağlar.

  • Bir istemci uygulaması adını veya konumunu temel nesne için yapılan değişiklikleri önler soyutlama katmanı sağlar.

Örneğin, personel tablo Adventure Worksadlı bir sunucuda bulunan Sunucu1. Başka bir sunucudan bu tablo başvurusu yapmak için Sunucu2, bir istemci uygulaması four-part adı kullanmak zorunda Server1.AdventureWorks.Person.Employee. Tablonun konumunu değiştirmek için olsaydı, Ayrıca, örneğin, başka bir sunucuya istemci uygulaması bu değişikliği yansıtacak şekilde değiştirilmesi gerekir.

Hem bu sorunları gidermek için bir eşanlamlı oluşturabilirsiniz EmpTable, Sunucu2 için personel masa üstünde Sunucu1. Şimdi, istemci uygulaması yalnızca tek parça ad kullanmak sahip EmpTable, başvuru personel tablo. Ayrıca, eğer konumunu çalışan tabloda değişiklikler, eşanlamlı değiştirmek gerekecektir EmpTable, yeni konumuna işaret personel tablo. Çünkü hiçbir eşanlamlı alter deyimi, öncelikle eşanlamlı bırakın gerekir EmpTable, sonra aynı adla eşanlamlı yeniden ancak eşanlamlı yeni konumuna işaret eden çalışan.

Eşanlamlı bir şemaya ait ve gibi diğer nesneleri bir şemada Eşanlamlısı adı benzersiz olmalıdır. Sen-ebilmek yaratmak için aşağıdaki veritabanı nesnelerini eş anlamlı:

Derleme (clr) depolanan yordamı

Derleme (clr) tablo değerli işlev

Derleme (clr) skalar fonksiyon

Derleme (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 masaya-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

[!NOT]

İşlevi temel nesneler için four-part adları desteklenmez.

Eşanlamlısı için başka bir eşanlamlı temel nesne olamaz ve eşanlamlı kullanıcı tanımlı bir toplama işlevi başvuru yapamazsınız.

Bir eşanlamlı temel nesne arasındaki bağı tarafından sadece adıdır. Tüm varlığı, tür ve temel nesne üzerinde denetleme izinleri çalışma süresi kadar ertelenmiş. Bu nedenle, temel nesne değiştirilebilir, düştü, veya düştü ve özgün ana nesneyle aynı adda başka bir nesne tarafından değiştirilir. Örneğin, eş, düşünün MyContacts, bu başvurular Person.Contact içinde tablo Adventure Works. Eğer kişi tablo bırakılan ve adlı bir görünümü tarafından yerine Person.Contact, MyContacts şimdi başvuru Person.Contact görünümü.

Başvurular için Eşanlamlıları şemaya bağlı değil. Bu nedenle, herhangi bir zamanda eşanlamlı kesilmesini. Ancak eşanlamlı bırakarak bırakıldı eşanlamlı sallantıda başvurular bırakarak riskiyle karşılaşırsınız. Bu başvurular yalnızca çalışma zamanında bulunabilir.

Eşanlamlı ve şemalar

Bir varsayılan şema değil sahibi olduğunuz ve eşanlamlısı oluşturmak istediğiniz varsa, size ait bir şema adı eşanlamlı adıyla nitelemeniz gerekir. Örneğin, eğer bir şema kendi x, ama y olduğu varsayılan şema ve create synonym deyimini kullanın, eşanlamlı şema adı öneki gerekir x, bir tek parça ad kullanılarak eşanlamlı adlandırma yerine. Eşanlamlı oluşturma hakkında daha fazla bilgi için bkz: synonym (Transact-sql) oluştur.

Eşanlamlı izin verme

Yalnızca eşanlamlı sahipleri, üye db_owner, ya da üyeleri db_ddladmin eşanlamlısı izni verebilirsiniz.

Size verebilir, inkar, tümünü ya da herhangi bir eşanlamlı aşağıdaki izinleri iptal etme:

DENETİM

DELETE

YÜRÜTME

EKLE

SEÇİN

SAHİPLİK AL

GÜNCELLEŞTİRME

VIEW DEFINITION

Eşanlamlılar kullanma

Sen-ebilmek kullanma onların başvurulan temel nesne birkaç sql deyimleri ve ifade bağlamları yerine eş anlamlı. Aşağıdaki tabloda, bu ifadeleri ve ifade bağlamlarda listesini içerir:

SEÇİN

EKLE

GÜNCELLEŞTİRME

DELETE

YÜRÜTME

Sub-selects

Önceden belirtildiği gibi bağlamlarda eş ile çalışırken, temel nesne etkilenir. Örneğin, bir tablo olan bir temel nesne eşanlamlı başvuran ve eşanlamlı bir satır eklemek, aslında bir satır başvurulan tabloya eklediğiniz.

[!NOT]

Bağlantılı bir sunucu üzerinde bulunan bir eşanlamlı başvuru yapamazsınız.

Eşanlamlı için OBJECT_ID işlevi parametre olarak kullanabilirsiniz; ancak işlev eşanlamlı temel nesne nesne Kımlığı döndürür.

ddl deyimi eşanlamlı başvuru yapamazsınız. Örneğin, adlı bir eşanlamlı başvuru aşağıdaki deyimleri dbo.MyProduct, hatalara neden:

ALTER TABLE dbo.MyProduct
   ADD NewFlag int null;
EXEC ('ALTER TABLE dbo.MyProduct
   ADD NewFlag int null');

Aşağıdaki izni deyimleri yalnızca eşanlamlı ve temel nesne ile ilişkili:

GRANT

REDDET

İPTAL ETME

 

Eşanlamlıları şemaya bağlı değildir ve bu nedenle, aşağıdaki şemaya bağlı ifade bağlamları tarafından başvurulan:

check kısıtlamaları

Hesaplanan sütunlar

Varsayılan ifadeleri

Kural ifadeler

Şemaya bağlı görünümler

Şemaya bağlı işlevleri

Şemaya bağlı işlevleri hakkında daha fazla bilgi için bkz: Kullanıcı tanımlı işlevler (veritabanı altyapısı) oluşturma.

Eşanlamlılar hakkında bilgi alma

sys.synonymsKatalog görünümü'nü içeren her eşanlamlı belirli bir veritabanı için bir girdi. Bu katalog görünüm eşanlamlı adı ve temel nesne adı gibi eşanlamlı meta verileri sunar. Hakkında daha fazla bilgi için sys.synonyms Katalog görünümü, bakın sys.SYNONYMS (Transact-sql).

Genişletilmiş özellikleri kullanarak, tanımlayıcı veya açıklayıcı metin, giriş maskeleri ve biçimlendirme kurallarını Özellikler eşanlamlısı olarak ekleyebilirsiniz. Özellik veritabanında depolandığından, özellik okumak tüm uygulamaları nesne aynı şekilde değerlendirebilirsiniz. Daha fazla bilgi için bkz.Using Extended Properties on Database Objects

Bir eşanlamlı temel nesne temel türünü bulmak için objectpropertyex işlevini kullanın. Daha fazla bilgi için, bkz. objectpropertyex (Transact-sql).

Örnekler

Aşağıdaki örnek, yerel bir nesne olan bir eşanlamlı temel nesne temel türünü verir.

USE tempdb;
GO
CREATE SYNONYM MyEmployee 
FOR AdventureWorks2012.HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyEmployee'), 'BaseType') AS BaseType;

Aşağıdaki örnek, adlı bir sunucuda bulunan bir uzak nesne bir eşanlamlı temel nesne temel türünü verir Server1.

EXECUTE sp_addlinkedserver Server1;
GO
CREATE SYNONYM MyRemoteEmployee
FOR Server1.AdventureWorks2012.HumanResources.Employee;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('MyRemoteEmployee'), 'BaseType') AS BaseType;
GO

İlişkili İçerik

Eşanlamlı oluşturma

synonym (Transact-sql) oluştur

synonym (Transact-sql) bırak

Ownership Chains