wtorek, 28 kwietnia 2015

Synonimy

Jeżeli zdarza się wam używać połączonych serwerów i to w dodatku w dużej ilości zapytań to zdajecie sobie sprawę z tego, że odwoływanie sie do obiektów, korzystając z pełnej czteroczłonowej nazwy jest mało wygodne. Jeżeli dodać do tego fakt, że te same zapytania, czy to procedury składowane muszą wykonywać się zarówno na środowiskach programistycznych, testowych a później produkcyjnych to jest to po prostu proszenie się o telefony czy maile do osób odpowiedzialnych za wsparcie aplikacji.
 
Tworzenie kilku wersji procedury składowanej, dla poszczególnych środowisk nie jest optymalnym podejściem. Z pomocą przychodzą jednakże synonimy. Jest to jedna z funkcjonalności, które nie są prawdopodobnie bardzo powrzechnie wykorzystywane.

Zasadniczo synonimy upraszczają zapytania odwołujące się do serwerów połaczonych, ale także mogą być pomocne w przypadku gdy nazwa tabeli się zmienia a jest ona referencjonowana przez aplikację. Utworzenie synonimu ze starą nazwą tabeli a odwołującego się do nowej nazwy sprawi, że dla aplikacji korzystającej z tego typu obiektu zmiana będzie niezauważalna.

W przypadku serwerów połączonych używanie synonimów ma tą zaletę, że w przypadku gdy są one wykorzystywane np. w procedurach składowanych, to ta sama wersja może być wykorzystywana na różnych środowiskach. Jedyne co musi być specyficzne dla poszczególnych środowisk to obiekt synonimu.

Tworzenie synonimu jest bardzo proste. Założmy, że mamy serwer połączony o nazwie MYSERVER oraz instancji SQL2012. Na serwerze znajduje się baza danych MyRemoteDatabase i zawiera ona tabelę Products. Synonim dla tego typu obiektu wyglądałby następująco.
CREATE SYNONYM dbo.LinkedServerProducts

FOR [MYSERVER\SQL2012].MyRemoteDatabase.dbo.Products

GO


Aby odwołać się teraz do obiektu Products na bazie danych MyRemoteDatabase wystarczy następujące zapytanie.


SELECT * FROM dbo.LinkedServerProducts



Powyższe zapytanie to w dużej mierze uproszczenie. O tym dlaczego nie warto używać SELECT * FROM pisałem w tym miejscu.

Synonimy, choć niezbyt często używane mogą być bardzo przydatne. Szczególnie, gdy zachodzi konieczność odwoływania się do obiektów na serwerach połączonych.

Prześlij komentarz