Ошибка 71561: неразрешенная ссылка на объект - PullRequest
1 голос
/ 28 октября 2019

В Visual Studio 2017, SSDT 2015 я получаю сообщение об ошибке «неразрешенная ссылка на объект». Эта ошибка возникает 2,589 раз, поэтому проблема не связана с одним конкретным фрагментом кода. Весь код компилируется и запускается непосредственно в SQL Server.

Я пробовал все, начиная с этой публикации, за исключением отключения "расширенной проверки Transact-SQL для общих объектов", поскольку эта опция имеетбыл удален.

Я попробовал почти все остальное, что могу найти в Google;Я уже два дня этим занимаюсь.

Вот пример кода, который выдает ошибку. Он отлично работает на SQL Server напрямую. Ошибка появляется в предложении FROM в каждой строке, содержащей ссылку на базу данных. Я не могу удалить эти ссылки или изменить местоположение представления. Это также происходит в хранимых процедурах, которые ссылаются на представления.

CREATE view [Migration].[vwCHILDS_Allegation_AllegationTrackingCharacteristics]
as
with src as (
    select
        (select AllegationId from CWNS_Migration.Allegation.Allegation where SourceSystemId = cast(1 as int) and SourceSystemIdentifier = cast(a.IDNBR as nvarchar(64))) AllegationId
        , (select TrackingCharacteristicsId from CWNS_Migration.Allegation.TrackingCharacteristics where Code = dfrvmi1.DestinationDataFieldReferenceValueCode) TrackingCharacteristicsId
        , (select VerificationStatusId from CWNS_Migration.Allegation.VerificationStatus where Code = dfrvmi2.DestinationDataFieldReferenceValueCode) VerificationStatusId
        , cast(1 as int) SourceSystemId
        , cast(src.IDNBR as nvarchar(64)) SourceSystemIdentifier
        , src.IDNBR SourceSystemIdentifier_Numeric
        , case when src.CRET_DT_TM = '0001-01-01' then null else src.CRET_DT_TM end SourceSystemCreatedDateTime
        , (
            select
                max(pe.PersonId) 
            from
                CWNS_Migration.PersonIdentity.PersonIdentifier pe
                join CHILDSDB2.VLCHA.STAFF_USERID st on cast(st.FK_STAFFFK_PERSID as nvarchar(64)) = pe.Identifier
                    and pe.PersonIdentificationSystemId = 4
            where
                st.USERID = ltrim(rtrim(src.CRET_USER_ID))) SourceSystemCreatedPersonId
    from
        CHILDSDB2.VLCHA.RPT_TRKNG_CHAR src
        join CHILDSDB2.VLCHA.ALGTN a on a.FK_RPTRPT_NBR = src.FK_RPTRPT_NBR
        join CHILDSDB2.VLCHA.FINDING f on f.FK_ALGTNID = a.IDNBR
        join DataCatalog.dbo.DataFieldReferenceValueMappingInfo dfrvmi1 on dfrvmi1.SourceDataFieldReferenceValueDataFieldId = 5438
            and dfrvmi1.SourceDataFieldReferenceValueCode = src.FK_TRKNG_CHAR_TCD
            and dfrvmi1.DestinationDataFieldReferenceValueDataFieldId = 20586
        join DataCatalog.dbo.DataFieldReferenceValueMappingInfo dfrvmi2 on dfrvmi1.SourceDataFieldReferenceValueDataFieldId = 1775
            and dfrvmi2.SourceDataFieldReferenceValueCode = f.FINDING_DET_CD
            and dfrvmi2.DestinationDataFieldReferenceValueDataFieldId = 55983
)
select
    src.*
from
    src
    left join CWNS_Migration.Allegation.AllegationTrackingCharacteristics tgt on tgt.SourceSystemId = src.SourceSystemId and tgt.SourceSystemIdentifier = src.SourceSystemIdentifier
    left join CWNS_Migration.Quarantine.AllegationTrackingCharacteristics q on q.SourceSystemId = src.SourceSystemId and q.SourceSystemIdentifier = src.SourceSystemIdentifier
        and q.QExecutionId = 1
where
    q.QExecutionId is null
    and (
        isnull(src.AllegationId, 0) <> isnull(tgt.AllegationId, 0)
        or isnull(src.TrackingCharacteristicsId, 0) <> isnull(tgt.TrackingCharacteristicsId, 0)
        or isnull(src.VerificationStatusId, 0) <> isnull(tgt.VerificationStatusId, 0)
        or try_cast(isnull(src.SourceSystemCreatedDateTime, '') as datetime) <> isnull(tgt.SourceSystemCreatedDateTime, '')
        or isnull(src.SourceSystemCreatedPersonId, '') <> isnull(tgt.SourceSystemCreatedPersonId, '')
    );

1 Ответ

1 голос
/ 29 октября 2019

Добавьте Ссылку на базу данных в свой проект:

Вам потребуется изменить код для использования:

[$(*ReferencedDatabaseName*)].schemaName.tableName
...