Mam procedurę składowaną, która odnosi się do połączonego serwera. W kilku miejscach procedury mam coś takiego:
INSERT INTO [TableName]
(...Columns...)
SELECT ...Columns...
FROM [ServerName\InstanceName].[Catalogue].[dbo].[TableName]
WHERE TableNameID = @TableNameID
Ta procedura istnieje w moim środowisku programistycznym, środowisku testowym i środowisku Live.
Problem polega na tym, że każda kopia procedury jest nieco inna, ponieważ nazwy serwerów są różne dla każdego środowiska. Utrudnia to zarządzanie wdrażaniem aktualizacji skryptów.
Czy istnieje sposób na przeniesienie procedury, aby każde środowisko mogło uruchamiać identyczne wersje?
Jeśli nie, to czy mogę coś zrobić, aby wdrożenie skryptu było mniej podatne na błędy / błędy?
sql-server
sql-server-2008
stored-procedures
linked-server
Doktorze Jones
źródło
źródło
SELECT <fields> FROM <linked server>
ale używać tej samej nazwy widoku na wszystkich serwerach, aby zachować kodOdpowiedzi:
Nazwa połączonego serwera nie musi być nazwą serwera. Możesz użyć nazwy ogólnej.
Skonfiguruj połączony serwer w każdym środowisku o tej samej nazwie, ale w rzeczywistości skieruj go na inne serwery.
źródło
Podoba mi się pomysł używania ogólnej nazwy serwera połączonego. Jednak w wielu środowiskach może to nie być możliwe. W takim przypadku możesz użyć dynamicznego SQl w swoim sp.
źródło