repo.RepoObject_persistence_SourceMismatch - V

type: V ( view ), modify_date: 2021-10-02 13:23:34

RepoObject_guid: 73E1C56A-C111-EC11-8519-A81E8446D5B0

Description

this view can be used to try to repair mismatch between source_RepoObject_guid and source_RepoObject_name or missing them

this could happen in case of renaming or guid changes

for example the source_RepoObject_guid could be lost in case of conecting the repository to the wrong dwh

Examples

Example 1. Usage
--repair repo.RepoObject_persistence.source_RepoObject_name via guid

Update
    repo.RepoObject_persistence_SourceMismatch
Set
    source_RepoObject_name = source_RepoObject_name_via_guid
Where
    (
        is_name_mismatch_via_guid = 1
        Or source_RepoObject_name Is Null
    )
    And Not source_RepoObject_name_via_guid Is Null

--repair repo.RepoObject_persistence.source_RepoObject_guid via name
Update
    repo.RepoObject_persistence_SourceMismatch
Set
    source_RepoObject_guid = source_RepoObject_guid_via_name
Where
    (
        is_guid_mismatch_via_name = 1
        Or source_RepoObject_guid Is Null
    )
    And Not source_RepoObject_guid_via_name Is Null

--still missing guid?
--repair repo.RepoObject_persistence.source_RepoObject_guid via default_source_RepoObject_name
Update
    repo.RepoObject_persistence_SourceMismatch
Set
    source_RepoObject_guid = source_RepoObject_guid_via_default_name
  , source_RepoObject_name = default_source_RepoObject_name
Where
    (
        source_RepoObject_guid Is Null
        Or source_RepoObject_name Is Null
    )
    And Not source_RepoObject_guid_via_default_name Is Null

--still entries?
--try other ways to solve
Select
    *
From
    repo.RepoObject_persistence_SourceMismatch
where
    is_mismatch = 1

Entity Diagram

entity-repo.repoobject_persistence_sourcemismatch

Columns

Table 1. Columns of repo.RepoObject_persistence_SourceMismatch - V
PK Column Name Data Type NULL? ID

nvarchar(128)

NULL

int

NOT NULL

int

NOT NULL

int

NOT NULL

uniqueidentifier

NULL

uniqueidentifier

NULL

uniqueidentifier

NULL

nvarchar(128)

NULL

nvarchar(128)

NULL

nvarchar(128)

NOT NULL

nvarchar(257)

NOT NULL

uniqueidentifier

NOT NULL

nvarchar(128)

NOT NULL

Foreign Key Diagram

entity_1_1_fk-repo.repoobject_persistence_sourcemismatch

References

Object Reference Diagram - 1 1

entity_1_1_objectref-repo.repoobject_persistence_sourcemismatch

Object Reference Diagram - Referenced - 30 0

entity_30_0_objectref-repo.repoobject_persistence_sourcemismatch

Object Reference Diagram - Referencing - 0 30

entity_0_30_objectref-repo.repoobject_persistence_sourcemismatch

Column Reference Diagram

entity_1_1_colref-repo.repoobject_persistence_sourcemismatch

Indexes

idx_RepoObject_persistence_SourceMismatch__1

idx_RepoObject_persistence_SourceMismatch__2

idx_RepoObject_persistence_SourceMismatch__3

idx_RepoObject_persistence_SourceMismatch__4

idx_RepoObject_persistence_SourceMismatch__5

Column Details

_

default_source_RepoObject_name

default_source_RepoObject_name

nvarchar(128)

NULL

is_guid_mismatch_via_name

is_guid_mismatch_via_name

int

NOT NULL

is_mismatch

is_mismatch

int

NOT NULL

is_name_mismatch_via_guid

is_name_mismatch_via_guid

int

NOT NULL

source_RepoObject_guid

source_RepoObject_guid

uniqueidentifier

NULL

source_RepoObject_guid_via_default_name

source_RepoObject_guid_via_default_name

uniqueidentifier

NULL

Referenced Columns

source_RepoObject_guid_via_name

source_RepoObject_guid_via_name

uniqueidentifier

NULL

Referenced Columns

source_RepoObject_name

source_RepoObject_name

nvarchar(128)

NULL

source_RepoObject_name_via_guid

source_RepoObject_name_via_guid

nvarchar(128)

NULL

Referenced Columns

target_name

target_name

nvarchar(128)

NOT NULL

target_RepoObject_fullname2

target_RepoObject_fullname2

nvarchar(257)

NOT NULL

Description

(concat([RepoObject_schema_name],'.',[RepoObject_name]))


target_RepoObject_guid

target_RepoObject_guid

uniqueidentifier

NOT NULL

target_schema

target_schema

nvarchar(128)

NOT NULL

sql_modules_definition

repo.RepoObject_persistence_SourceMismatch - V script
/*
<<property_start>>Description
this view can be used to try to repair mismatch between source_RepoObject_guid and source_RepoObject_name or missing them

this could happen in case of renaming or guid changes

for example the source_RepoObject_guid could be lost in case of conecting the repository to the wrong dwh
<<property_end>>

<<property_start>>ExampleUsage
--repair repo.RepoObject_persistence.source_RepoObject_name via guid

Update
    repo.RepoObject_persistence_SourceMismatch
Set
    source_RepoObject_name = source_RepoObject_name_via_guid
Where
    (
        is_name_mismatch_via_guid = 1
        Or source_RepoObject_name Is Null
    )
    And Not source_RepoObject_name_via_guid Is Null

--repair repo.RepoObject_persistence.source_RepoObject_guid via name
Update
    repo.RepoObject_persistence_SourceMismatch
Set
    source_RepoObject_guid = source_RepoObject_guid_via_name
Where
    (
        is_guid_mismatch_via_name = 1
        Or source_RepoObject_guid Is Null
    )
    And Not source_RepoObject_guid_via_name Is Null

--still missing guid?
--repair repo.RepoObject_persistence.source_RepoObject_guid via default_source_RepoObject_name
Update
    repo.RepoObject_persistence_SourceMismatch
Set
    source_RepoObject_guid = source_RepoObject_guid_via_default_name
  , source_RepoObject_name = default_source_RepoObject_name
Where
    (
        source_RepoObject_guid Is Null
        Or source_RepoObject_name Is Null
    )
    And Not source_RepoObject_guid_via_default_name Is Null

--still entries?
--try other ways to solve
Select
    *
From
    repo.RepoObject_persistence_SourceMismatch
where
    is_mismatch = 1
<<property_end>>

*/
CREATE View repo.RepoObject_persistence_SourceMismatch
As
Select
    T1.target_RepoObject_guid
  , T1.target_RepoObject_fullname2
  , T1.target_name
  , T1.target_schema
  , T1.source_RepoObject_guid
  , T1.source_RepoObject_name
  , T1.default_source_RepoObject_name
  , source_RepoObject_name_via_guid         = src.RepoObject_name
  , source_RepoObject_guid_via_name         = src2.RepoObject_guid
  , source_RepoObject_guid_via_default_name = src3.RepoObject_guid
  , is_name_mismatch_via_guid               = Iif(T1.source_RepoObject_name <> src.RepoObject_name, 1, 0)
  , is_guid_mismatch_via_name               = Iif(T1.source_RepoObject_guid <> src2.RepoObject_guid, 1, 0)
  , is_mismatch                             = Iif(
                                                  T1.source_RepoObject_guid Is Null
                                                  Or T1.source_RepoObject_name Is Null
                                                  Or T1.source_RepoObject_name <> src.RepoObject_name
                                                  Or T1.source_RepoObject_guid <> src2.RepoObject_guid
                                                , 1
                                                , 0)
From
    repo.RepoObject_persistence_ForUpdate As T1
    Left Outer Join
        repo.RepoObject                   As src
            On
            src.RepoObject_guid             = T1.source_RepoObject_guid

    Left Outer Join
        repo.RepoObject                   As src2
            On
            src2.RepoObject_name            = T1.source_RepoObject_name
            And src2.RepoObject_schema_name = T1.target_schema

    Left Outer Join
        repo.RepoObject                   As src3
            On
            src3.RepoObject_name            = T1.default_source_RepoObject_name
            And src3.RepoObject_schema_name = T1.target_schema