1

私は現在、バックエンドで.mdb(Access)データベースファイルを使用するVB.NETデスクトップアプリケーションに取り組んでいます。.mdbファイルは、VB.NETアプリで開いて編集します。編集が完了したら、ユーザーはデータをSQLServerデータベースにインポートする必要があります。動的ファイルパスシナリオを導入しようとするまで、これは簡単な作業です。

私はSSISについてかなりの経験がありますが、これに取り組むのに問題があります。ユーザーが選択した.mdbファイルを参照できるようにするWinFormを作成しました。.mdbファイル名には、一意にするためにタイムスタンプ/日付情報が含まれています。(私はアプリのこの部分を開発しませんでした。最近これに取り組み始めたため、問題が発生しました。.mdbファイル名にタイムスタンプを付けませんが、これはImが強制的に使用したものです!)

とにかく、ファイル名とパスをSSISパッケージに動的に渡す必要があります。ConnectionStringなどの変数を作成する場所はわかりますが、詳細と、MS Accessに使用する必要のあるデータ接続のタイプ(Ole DB、ODBC、またはJet 4.0 for Office ?? !)

また、パッケージは.mdbファイルをソースとして使用するため、データ接続の接続文字列は動的である必要があると想定しています。しかし、SSISで.mdbファイルの動的データ接続をどのように作成しますか?

また、ファイル名/パス文字列をSSISパッケージに渡すにはどうすればよいですか?

私は現在、このコードでプロトタイピングしています:

    'Execute the SSIS_Import package 
    Dim pkgLocation As String
    Dim pkg As New Package
    Dim app As New Microsoft.SqlServer.Dts.Runtime.Application
    Dim pkgResults As DTSExecResult
    Dim eventListener As New EventListener()

    Try
        pkgLocation = "C:\SSIS_DataTransfer\ImportPackage.dtsx"

        'TO-DO: pass databasePath variable to SSIS package here ???
        pkg = app.LoadPackage(pkgLocation, eventListener)
        pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)

        Select Case pkgResults

            Case DTSExecResult.Completion
                MsgBox("Data import completed!")

            Case DTSExecResult.Success
                MsgBox("Data import was successful!")

            Case DTSExecResult.Failure
                MsgBox("Data import was not successful!")

        End Select

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
  1. .mdbファイルの場所をSSISパッケージに渡すにはどうすればよいですか?LoadPackage多分?
  2. SSISパッケージのデータ接続で動的ファイルの場所を使用するにはどうすればよいですか?

動的ではない.mdbファイルをアップロードするのは非常に簡単です。ユーザー選択の動的な側面を紹介するまで、ソースと宛先の設定は非常に簡単です。これはSSISでどのように可能ですか?

どんな助けでも大歓迎です。ありがとうございました。

4

3 に答える 3

3

これは、使用する接続と実行方法に応じて一部変更されますが、変数をパッケージに取り込むことは基本的に同じです。SSISを使って久しぶりなので少しずれているかもしれません。しかし、最初のステップを理解すれば、それはほとんど簡単です。

変数をパッケージに入れるには:

  • ファイル名を保持する変数をパッケージに作成します。デザイナ画面をクリックして、パッケージレベルのスコープにいることを確認し、[変数]ウィンドウを開き、[新規]をクリックして、変数の名前( "filePath")、タイプ( "String")を指定し、デフォルト値を指定します。
  • VB.Netコードから変数を設定します。

VB.NETの場合:

pkg = app.LoadPackage(pkgLocation, eventListener)
' Set the file path variable in the package
' NB: You may need to prefix "User::" to the variable name depending on the execution method
pkg.Variables("filePath").Value = databasePath
pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)
  • これで、パッケージ内の変数にアクセスできるようになります。

Accessデータベースのインポートに使用している接続によっては、いくつかの異なる処理が必要になる場合があります。OLEDB接続を使用している場合は、接続文字列とServerNameプロパティがあります。ServerNameプロパティを設定して、ファイルパス(@[User::filePath])を持つ変数を使用し、接続文字列を使用してfilePath変数("Data Source=" + @[User::filePath] + ";Provider=Microsoft.Jet.OLEDB.4.0;")も使用するようにします。

式を使用して接続文字列を動的に設定する方法については、このテキストファイルの例を確認してください。これはAccess用ですが、データベースからの接続文字列が複雑です。

于 2009-05-07T18:35:09.007 に答える
0

プログラムからSSISパッケージを呼び出さないので、そのように構成する方法がわかりません。OLEDB接続マネージャーを使用して「ネイティブOLEDBJet 4.0プロバイダー」を使用すると、接続マネージャーのServerNameプロパティを.MDBファイルへのパスに設定できることを知っています。

于 2009-05-07T17:15:55.830 に答える
0

ファイルをimporting.mdbに移動することでこれにアプローチします。その場合、接続マネージャーは静的です。

于 2009-08-19T13:49:44.877 に答える