ホームページ >データベース >mysql チュートリアル >複数の .dtsx ファイルからのバージョン番号の取得を自動化するにはどうすればよいですか?

複数の .dtsx ファイルからのバージョン番号の取得を自動化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-21 15:38:16958ブラウズ

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

.Dtsx ファイルからのバージョン番号の自動取得

概要:

パッケージの手動取得多数の SSIS ファイルのバージョンを管理するのは面倒な場合があります。この記事では、このプロセスを自動化するさまざまな方法を説明します。

SSIS パッケージ内でのシステム変数の使用:

  • パッケージ内の SSIS システム変数にアクセスして取得します。バージョン情報:

    • バージョンビルド
    • バージョンコメント
    • バージョンGUID
    • VersionMajor
    • VersionMinor

取得.dtsx ファイルのバージョン:

  • dtsx ファイルを XML/テキストとして解析:

    • 「PackageFormatVersion」を検索" ファイル内のプロパティheader.
  • 正規表現を使用する:

    • PackageFormatVersion をキャプチャするための正規表現パターンを作成します。
  • XML パーサーを使用する:

    • dtsx ファイルを XML ドキュメントとしてロードし、XPath を使用してクエリを実行します。 「PackageFormatVersion」の場合属性。

SQL Server に保存されている .dtsx ファイルからの情報の取得:

  • 以下を参照してください。のリンククエリ:

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

抽出中SQL Server に保存されていない .dtsx ファイルのデータ:

  • 上記の方法 (正規表現または XML 解析を使用) を使用して、ファイル システムに保存されている .dtsx ファイルを読み取ります。

を使用したサンプルコード正規表現:

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

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

以上が複数の .dtsx ファイルからのバージョン番号の取得を自動化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。