From 05f03733b2a6f2ed30ffdedac4c0e3a3bf1f4c96 Mon Sep 17 00:00:00 2001 From: Kai Dehling Date: Wed, 14 Dec 2022 11:17:52 +0100 Subject: [PATCH 1/2] Fix keif888/SQLServerMetadata#3 Use table logic for DSV Views without QueryDefinition for Database Views --- DependencyAnalyzer2008/SSASEnumerator.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/DependencyAnalyzer2008/SSASEnumerator.cs b/DependencyAnalyzer2008/SSASEnumerator.cs index 339053b..58905b1 100644 --- a/DependencyAnalyzer2008/SSASEnumerator.cs +++ b/DependencyAnalyzer2008/SSASEnumerator.cs @@ -234,6 +234,23 @@ private void EnumerateDsvTables(DataSourceView dsv, int connectionID, int dsvID, { repository.AddAttribute(dsvTableID, Repository.Attributes.QueryDefinition, queryDefinition.ToString()); } + else + { + // if query definition is missing it's not a Named Query in DSV. Handle it like a normal table, copied code from table logic abvove + // now add the table + string tableName = GetFullyQualifiedTableName(table); + + if (threePartNames) + tableName = String.Format("[{0}].{1}", repository.RetrieveDatabaseNameFromConnectionID(connectionID), tableName); + int tableID = repository.GetTable(connectionID, tableName); + if (tableID == -1) + { + tableID = repository.AddObject(tableName, string.Empty, RelationalEnumerator.ObjectTypes.Table, connectionID); + } + + // add the lineage + repository.AddMapping(tableID, dsvTableID); + } } } } From e1429e0ad84d5d00e8cf3bfee638b9e5ebd48e00 Mon Sep 17 00:00:00 2001 From: Kai Dehling Date: Thu, 26 Sep 2024 21:42:15 +0200 Subject: [PATCH 2/2] Catch and log error message when connection manager can't be created from connection manager item to avoid interuption of analyzing ipsac file --- DependencyAnalyzer2008/SsisEnumerator.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/DependencyAnalyzer2008/SsisEnumerator.cs b/DependencyAnalyzer2008/SsisEnumerator.cs index 9c91807..27887e7 100644 --- a/DependencyAnalyzer2008/SsisEnumerator.cs +++ b/DependencyAnalyzer2008/SsisEnumerator.cs @@ -710,7 +710,14 @@ private void EnumerateIntegrationServicePack(string integrationServicePack, stri // This seems to be needed for SQL 2012, but not later versions. foreach (ConnectionManagerItem cmi in ssisProject.ConnectionManagerItems) { - log.InfoFormat("Discovered connection manager {0}", cmi.ConnectionManager.Name); + try + { + log.InfoFormat("Discovered connection manager {0}", cmi.ConnectionManager.Name); + } + catch (Exception ex) + { + log.ErrorFormat("Unabled to create connection manager: {0}\nStack Trace:\n{1}.", ex.Message, ex.StackTrace); + } } // Parse each and every package in the project. foreach (PackageItem pi in ssisProject.PackageItems)