2011-10-04 17 views
12

Mamy kilka synonimów, które są używane do odwoływania się do tabel w osobnej bazie danych (na tym samym serwerze).Projekt bazy danych Visual Studio 2010 - nierozwiązane odniesienie do synonimów

Rzeczywiste synonimy to dobrze, ale przechowywane procuje/użytkownika określone funkcje odniesienia wymienione synonimy przedstawiać następujący komunikat:

Error 13 SQL03006: Column: [dbo].[GetCocosIndexSearched].[User ID] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [dbo].[AuditType].[e]::[LOGIN_ID], [dbo].[EMPLOYEES].[e]::[LOGIN_ID], [dbo].[EMPLOYEES].[LOGIN_ID] or [dbo].[SearchCIBirthsRequest].[e]::[LOGIN_ID]. C:\VSTS\Corporate\WARS Audit\MAIN\Source\RBDM.Audit.Database\Schema Objects\Schemas\dbo\Programmability\Functions\GetCocosIndexSearched_1.function.sql 21 5 RBDM.Audit.Database 

[dbo].[GetCocosIndexSearched] jest funkcją i [dbo].[EMPLOYEES] jest synonimem.

Wszystko to działa poprawnie w samej bazie danych - problem leży wyłącznie w projekcie bazy danych. Próbowałem dodanie odniesienia do oddzielnej bazie danych (za pomocą nowego projektu bazy danych lub projektu schematu bazy danych), ale potem mają problemy konflikt z synonimów i odniesienia tabeli:

Error 7 SQL04105: The model already has an element that has the same name dbo.EMPLOYEES. C:\VSTS\Corporate\WARS Audit\MAIN\Source\RBDM.Audit.Database\Schema Objects\Schemas\dbo\Synonyms\EMPLOYEES.synonym.sql 2 1 RBDM.Audit.Database 

pomysłów? Istnieje obejście wspomniane w innym postu o stackoverflow, który mówi o umieszczaniu skryptów do tworzenia w Script.PostDeployment.sql - brzmi dla mnie trochę zbyt zręcznie.

Odpowiedz

8

Dzieje się tak, ponieważ w bazie danych wywołujących należy dodać odniesienie do zależnej bazy danych i określić także wartość dla nazwy bazy danych. Spójrz poniżej:

Database reference

Następnie można utworzyć synonim stosując następujący kod:

CREATE SYNONYM [dbo].[mytable] FOR [$(MasterDatabase)].[dbo].[mytable] 
0

Mam ten sam problem z synonimów stołowych tym momencie do innej bazy danych na tym samym serwerze, co główna baza danych. Dodanie odnośnika działa dla prawie wszystkich funkcji, ale wbudowanych w funkcję tabelaryczną. Gdy tylko spróbujesz użyć synonimu w takiej funkcji, błąd powraca. Aktualizacja 4 SSDT 2013 to moja wersja. To po prostu niewiarygodne, że w 2016 roku taki błąd nadal występuje u nas. Obsługa synonimów powinna przebiegać bezproblemowo, ponieważ jest to główny mechanizm abstrakcji zależności. Nie mogę uwierzyć, że wciąż nie zostało to naprawione.

Powiązane problemy