Maison >base de données >tutoriel mysql >Comment puis-je automatiser la récupération des numéros de version à partir de plusieurs fichiers .dtsx ?

Comment puis-je automatiser la récupération des numéros de version à partir de plusieurs fichiers .dtsx ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-21 15:38:16958parcourir

How Can I Automate the Retrieval of Version Numbers from Multiple .dtsx Files?

Récupération automatique du numéro de version à partir des fichiers .Dtsx

Introduction :

Récupération manuelle du package les versions de nombreux fichiers SSIS peuvent être fastidieuses. Cet article propose différentes approches pour automatiser ce processus.

Utilisation des variables système dans les packages SSIS :

  • Accédez aux variables système SSIS dans le package pour récupérer version informations :

    • VersionBuild
    • VersionComment
    • Version GUID
    • VersionMajor
    • VersionMinor

Obtention Version à partir des fichiers .dtsx :

  • Analyser le fichier dtsx au format XML/Texte :

    • Recherchez "PackageFormatVersion " propriété dans le fichier en-tête.
  • Utilisez Regex :

    • Écrivez un modèle d'expression régulière pour capturer les informations PackageFormatVersion.
  • Utiliser un XML Analyseur :

    • Chargez le fichier dtsx en tant que document XML et utilisez XPath pour rechercher l'attribut "PackageFormatVersion".

Récupération d'informations à partir de fichiers .dtsx stockés dans SQL Serveur :

  • Reportez-vous aux liens suivants pour requêtes :

    • https://billfellows.com/ssis-package-query/
    • https://technet.microsoft.com/en-us/library/cc521816.aspx

Extraction de données à partir de .dtsx Fichiers non stockés dans SQL Server :

  • Utilisez les méthodes décrites ci-dessus (en utilisant l'analyse Regex ou XML) pour lire les fichiers .dtsx stockés sur le système de fichiers.

Exemple de code utilisant Regex :

Public Sub ReadPackagesInfo(ByVal strDirectory As String)
    ' Initialize a list to store package information
    m_lst.Clear()

    Dim strPackageFormatVersion As String = ""
    Dim strCreationDate As String = ""
    ' ... (Additional property variables)

    For Each strFile As String In IO.Directory.GetFiles(strDirectory, "*.dtsx", IO.SearchOption.AllDirectories)
        ' Read the file contents
        Dim strContent As String = ""
        Using sr As New IO.StreamReader(strFile)
            strContent = sr.ReadToEnd
            sr.Close()
        End Using

        ' Use Regex to extract package version and other properties
        strPackageFormatVersion = Regex.Match(strContent, "(?<=""PackageFormatVersion"">)(.*)(?=</DTS:Property>)", RegexOptions.Singleline).Value
        ' ... (Additional regex patterns for other properties)

        ' Add package information to the list
        m_lst.Add(New PackageInfo With {
                        .PackageFileName = strFile,
                        .PackageFormatVersion = strPackageFormatVersion,
                        ' ... (Additional properties)
                    })
    Next
End Sub

Exemple de code utilisant l'analyseur XML :

Public Sub ReadPackagesInfoUsingXmlParser(ByVal strDirectory As String)
    ' Initialize a list to store package information
    m_lst.Clear()

    Dim strPackageFormatVersion As String = ""
    Dim strCreationDate As String = ""
    ' ... (Additional property variables)

    For Each strFile As String In IO.Directory.GetFiles(strDirectory, "*.dtsx", IO.SearchOption.AllDirectories)
        ' Load the file as XML document
        Dim xml = XDocument.Load(strFile)

        ' Create a namespace manager
        Dim ns As XNamespace = "www.microsoft.com/SqlServer/Dts"
        Dim man As XmlNamespaceManager = New XmlNamespaceManager(New NameTable())
        man.AddNamespace("DTS", "www.microsoft.com/SqlServer/Dts")

        If Not xml.Root Is Nothing AndAlso
            Not xml.Root.Descendants(ns + "Property").Attributes(ns + "Name") Is Nothing AndAlso
                 xml.Root.Descendants(ns + "Property").Attributes(ns + "Name").Where(Function(x) x.Value = "PackageFormatVersion").Count > 0 Then
            ' Extract package version and other properties using XPaths
            strPackageFormatVersion = xml.Root.Descendants(ns + "Property").Attributes(ns + "Name").Where(Function(x) x.Value = "PackageFormatVersion").FirstOrDefault.Parent.Value
            ' ... (Additional property extraction using XPaths)
        End If

        ' Add package information to the list
        m_lst.Add(New PackageInfo With {
                        .PackageFileName = strFile,
                        .PackageFormatVersion = strPackageFormatVersion,
                        ' ... (Additional properties)
                    })
    Next
End Sub

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn