2011-10-04 6 views
12

동일한 서버에있는 별도의 데이터베이스에서 테이블을 참조하는 데 사용되는 몇 가지 동의어가 있습니다.Visual Studio 2010 데이터베이스 프로젝트 - 동의어에 대한 확인되지 않은 참조

실제 동의어 미세하지만 기준 동의어 다음 에러 표시, 상기 저장된 프록/유저 정의 함수 :

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] 함수이고 [dbo].[EMPLOYEES]는 동의어이다.

이 모든 것이 실제 데이터베이스 자체에서 정상적으로 작동합니다. 문제는 전적으로 데이터베이스 프로젝트에만 있습니다. 나는 (새 데이터베이스 프로젝트 또는 데이터베이스 프로젝트 스키마를 통해 중 하나)를 별도의 데이터베이스에 대한 참조를 추가했지만, 다음 동의어 및 참조 테이블과 충돌 문제가했습니다

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 

어떤 아이디어? 다른 stackoverflow 게시판에 언급 된 해결 방법은 작성 스크립트를 Script.PostDeployment.sql에 두는 것에 관한 이야기입니다. - 나에게 너무 해킹하는 소리가 들립니다.

답변

8

이것은 호출자 데이터베이스에서 종속 데이터베이스에 대한 참조를 추가하고 데이터베이스 이름에도 값을 지정해야하기 때문에 발생합니다. 아래 봐 : 나는 같은 서버의 다른 데이터베이스를 가리 키 테이블 동의어와 같은 문제가

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

:

Database reference

그런 다음 다음과 같은 코드를 사용하여 동의어를 만들 수 있습니다 주 데이터베이스. 참조를 추가하는 것은 거의 모든 기능에 적용되지만 인라인 테이블 값 기능은 작동합니다. 동의어를 사용하려고하면 바로이 기능에 오류가 발생합니다.

create synonym syn.Table for [$(MyDb)].[dbo].[Table]; 

SSDT 2013 업데이트 4가 제 버전입니다. 2016 년에 그러한 오류가 여전히 우리에게 있다는 것은 믿기지 않습니다. 동의어 처리는 이것이 종속성을 추상화하는 주요 메커니즘이므로 완벽해야합니다. 아직 해결되지 않았다는 것을 믿을 수 없습니다.

관련 문제