Dynamics NAV Übersicht über
installierte Branchen-
und Speziallösungen
installierte
und
Für das ERP-System Microsoft Dynamics NAV gibt es etliche Branchen- und Speziallösungen. Diese Branchen- und Speziallösungen erweitern Dynamics NAV um zahlreiche vertikale und horizontale Funktionen. Oftmals werden vom NAV-Partner sogar weitere Lösungen installiert, von deren Existenz die Anwendenden gar nichts wissen. Wir zeigen, wie sich eine Übersicht generieren lässt.
SQL-Skript
In Dynamics NAV werden den Objekten eine oder mehrere Versionsnummern hinterlegt.
Um einen schnellen Überblick über alle installierten Branchen- und Speziallösungen zu erhalten, reicht aber ein Blick auf diese Versionsnummern nicht aus, da wir hier von tausenden Einträgen reden. Abhilfe schafft das folgende kleine SQL-Skript.
DECLARE @dbname varchar(20);
SET @dbname = 'INSERT_DBNAME';
DECLARE @stmt varchar(612);
SET @stmt =
'WITH sortedList AS
(
SELECT
SUBSTRING(vList.Item,0,PATINDEX(''%[0-9]%.%'',vList.Item)) AS Produkt,
SUBSTRING(vList.Item,PATINDEX(''%[0-9]%.%'',vList.Item),LEN(vList.Item)) AS allVersions
FROM
(
SELECT Item
FROM DelimitedSplit8K(
STUFF(
(
SELECT DISTINCT '','' + OBJ.[Version List] AS [text()]
FROM [' + @dbname + '].[dbo].[Object] OBJ
FOR XML PATH('''')
)
,1,1,'''')
,'','')
WHERE Item != ''''
) AS vList
)
SELECT sortedList.Produkt,MAX(sortedList.allVersions) AS Version
FROM sortedList
WHERE Produkt != ''''
GROUP BY sortedList.Produkt';
EXEC(@stmt);
Die im SQL-Skript genutzte Funktion „DelimitedSplit8K“ basiert auf „Tally-Tables“ und ist die performanteste der allgemein bekannten SQL-Splitter-Methoden. Die Funktion kann hier heruntergeladen werden und muss – sinnvollerweise in der Master-DB – zuvor erstellt werden.
Mit dieser SQL-Abfrage wird zunächst eine kommagetrennte Auflistung aller Versionseinträge erstellt. Die durch Komma separierten Elemente werden durch die Funktion „DelimitedSplit8K“ voneinander getrennt und in eine temporäre Tabelle gespeist. In dieser Tabelle befinden sich dann alle einzelnen Produktversionen der gesamten Tabelle „Object“. Für unsere Zwecke sind wir allerdings nur an den aktuellsten Versionen eines Produkts interessiert und geben letztendlich nur diese aus. Zusätzlich wird die Produktbezeichnung von der Versionsnummer getrennt.
Wird das SQL-Skript ausgeführt, erscheint eine Liste mit allen in der Datenbank installierten Lösungen.
Es ist zu erwähnen, dass die Ausgabe nicht völlig fehlerfrei geschieht. Aufgrund der unglücklichen Namensgebung des Produktes „NAVW1“ mit der darauffolgenden Versionsnummer und fehlender Möglichkeiten dies zuzüglich auszufiltern, ist zu beachten, dass es in diesem Fall zu einer zusätzlichen vorangestellten „1“ in der Versionsnummer kommt.
In der zweiten Zeile des SQL-Skripts muss in der Variable noch der Datenbankname der zu prüfenden Datenbank eingetragen werden. Wir haben diese Stelle mit INSERT_DBNAME gekennzeichnet.