none
SSMS2017対応版(V17.9)でインポートしたSSISパッケージの実行で、スクリプトタスクが読み込みできないエラーで終了する。 RRS feed

  • 質問

  • お世話になっております。

    表記現象の前提等:

    ・現行、Windows server 2008 R2 / sql server 2008 R2で開発したSSISパッケージ7で、スクリプトタスク(VB)を組み込んでいます。

    ・当該パッケージをエクスポートし、新環境:Windows Server 2016 / sql server 2017内のSSISインスタンス(msdb)内にインポート & アップグレードを実施しました。(エラーなし)

    ・新環境で、該当パッケージを実行させると、定義されているスクリプトタスクが読み込めない・・の実行エラーが発生します。

    -----------------------------------------------------------------------------------------------------------------

    sql server 2017のインストールでは、SSDTも別途 個別インストールとなってしまい、インストールセンタからリンクされるURLから、VS 2017,及び SSRS,SSIS,SSASを個別に追加設定しています。

    Visual Studio の SQL Server Data Tools (SSDT) をダウンロードし、インストールする 
    ?2018?年?09?月?28?日 

     ※ただ、、VSTAについての情報は無し


    -------------------------------------------------------------------------------------------------------------------------
    検索した結果、スクリプト実行には、VSTAが別途インストールが必要との記述がありました。

    スクリプト   タスク
    ?2017?年?03?月?14?日

    タスクが使用するスクリプトの記述と実行

    スクリプト タスクでは、スクリプトを記述する環境、およびそのスクリプトを実行するエンジンとして Microsoft Visual   Studio Tools for Applications (VSTA) を使用します。 
                           
    VSTA には、色分け表示が可能な Visual Studio エディター、IntelliSense、 Visual   Studio オブジェクト エクスプローラー など、 環境での標準機能がすべて含まれています。 VSTA には、他の Microsoft   の開発ツールに付属しているのと同じデバッガーも含まれています。 スクリプト内のブレークポイントは、 Integration Services   のタスクやコンテナーのブレークポイントとシームレスに動作します。 VSTA では、 Microsoft Visual Basic と Microsoft   Visual C# の両方のプログラミング言語がサポートされます。 
                           
    スクリプトを実行するには、パッケージを実行するコンピューターに VSTA がインストールされている必要があります。   パッケージを実行すると、タスクはスクリプト エンジンを読み込み、スクリプトを実行します。   プロジェクト内のアセンブリへの参照を追加すると、スクリプトから外部の .NET アセンブリにアクセスできます。 

    ==============================================================================

    お願い事項:

    現在、VSTAを追加インストールしての検証するための環境がなく(本番環境のみ)、申し訳ないのですが、前述の情報のように VSTAの追加設定で、パッケージ実行時でのスクリプト読み込みエラーが回避できて、正常にパッケージが実行されるのか、ご教示いただけないでしょうか?

    宜しくお願い致します。

     ※一旦 VSTAを設定してしまった後に、正しくアンインストールできるのかも、今の状況ですとかなり不安な感じです。

    2018年12月27日 2:34

回答

  • akiyama1192さん、こんにちは。フォーラムオペレーターのHarukaです。
    詳細な手順をご提供いただきありがとうございます。

    SSDTで1つのパッケージが直接開かれると、自動的に最新バージョンに更新されます(SSISTのバージョンによって、SSIS2019/2017となります)。
    ただし、ターゲットサーバーはSQL Server 2016なので、このパッケージをサーバーにデプロイすると、スクリプトは受け入れられません。
    なぜなら、高バージョンのオブジェクトを低バージョンのシステムにインポートすることはできないためです。

    解決策はakiyama1192さんが説明したとおりです。 
    SSISプロジェクトを作成し、TargetServerersionをSQL Server 2016に変更し、既存のパッケージを追加します。
    このようにして、パッケージ/スクリプトのバージョンはターゲットサーバーと一致するようになります。

    うぞよろしくお願いします。


    ~ 参考になった投稿には回答としてマークの設定にご協力ください ~
    MSDN Community Support Haruka

    • 回答としてマーク akiyama1192 2019年1月10日 23:13
    2019年1月9日 2:42
    モデレータ

すべての返信

  • VSTAの状況ですが、すでにインストール済みの状況でした。

    VS2017(SSDT)でも、スクリプトソース編集はできており、またOK実行で、プレコンパイルもできているよいうです。

    何かほかに環境が必要なのか、現時点では見当がついていない状況です。

    宜しくお願い致します。

    2018年12月28日 0:18
  • SSISパッケージ実行時での、スクリプトタスクの読み込みエラーの状況ですが

    ・VS2017で新規に作成したスクリプトタスク、およびVBスクリプト編集したパッケージは、実行時に読み込みできないエラーは

      発生しない。

    ・今回は、SSIS 2008R2の古い仕様で開発されたSSISパッケージで、スクリプトタスク内のVBスクリプトも、2017仕様では

      ない。(パッケージのアップグレードデハ、スクリプト内の検証とは2017仕様への変換とかは、してくれない??)

    --------------------------------------------------------------------------------------------------------------

    上記の状況からすると、結局

    ①2008R2仕様のスクリプトタスクは移行できない。

    ②2017仕様で、スクリプトタスクは、新規に作成し直し

    の手順しかないのでしょうか??

    何か、別手段ご存知でしたら、ご教示お願いします。

    2018年12月28日 2:06
  • 状況の追加です。

    ①VS2017で新規にプロジェクト作成->PKG内にスクリプトタスク定義->保存->該当のPKGをSSISインスタンスにインポート->PKG実行

     ・スクリプトタスクは読み込みできている。

    ②VS2017で、該当PKGをファイル>開くで編集し、PKG保存->SSISインスタンス7にインポート->PKG実行で、スクリプトタスクが読み込めないエラー発生

    ※DTSパッケージを直接VS2017でファイル指定から編集できないのか、確認中

    の状況です。

    2018年12月28日 6:21
  • akiyama1192さん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    上記の件につきまして、
    開発/本番サーバーにVSTAを個別にインストールする必要はありません。
    スタンドアロンSSDTをインストールすると、VSTA、SSDT、Visual Studioなど、必要なすべての環境が自動的にインストールされます。

    >・新環境で、該当パッケージを実行させると、定義されているスクリプトタスクが読み込めない・・の実行エラーが発生します。
    このエラーメッセージは、スクリプトがパッケージと共にサーバーにデプロイされていないことを示しています。 
    DeploymentツールとSQL Serverの間に非互換性がある可能性があります。
    そのため、パッケージをMSDBにどのように展開したかを詳しく説明いただけますでしょうか。
    そして、これはマシン上の唯一のSQL Serverでしょうか。

    試すことができるいくつかの方法があります。
    1)SSMSで、フォルダを右クリックして[インポートパッケージ...]を選択します。

    Deploy SSIS Package – Integration services MSDB

    2)SSDTで、[<Package.dtsx>のコピーを名前を付けて保存]をクリックします。

    To save a copy of a package

    うぞよろしくお願いします。


    ~ 参考になった投稿には回答としてマークの設定にご協力ください ~
    MSDN Community Support Haruka

    2019年1月2日 6:44
    モデレータ
  • お世話になっております。

    このエラーメッセージは、スクリプトがパッケージと共にサーバーにデプロイされていないことを示しています。 
    DeploymentツールとSQL Serverの間に非互換性がある可能性があります。
    そのため、パッケージをMSDBにどのように展開したかを詳しく説明いただけますでしょうか。
    そして、これはマシン上の唯一のSQL Serverでしょうか。

    -->旧環境のパッケージ(スクリプトタスクあり)をエクスポートし、

    2019年1月3日 20:52
  • お世話になっております。

    ・SSDTのインストールで、SSTAがインストールされることが確認できました。

    このエラーメッセージは、スクリプトがパッケージと共にサーバーにデプロイされていないことを示しています。 

    DeploymentツールとSQL Serverの間に非互換性がある可能性があります。
    そのため、パッケージをMSDBにどのように展開したかを詳しく説明いただけますでしょうか。
    そして、これはマシン上の唯一のSQL Serverでしょうか。

    -->旧環境のパッケージ(スクリプトタスクあり)をエクスポートし、新環境へは標準でインポートしたんですが、一旦インポート前にパッケージをSSDTで編集(一旦ダミーでプロジェクトを準備してパッケージを取り込み実施)すると、互換性がないようなエラーMSGが展開されていました。

    どうやら、旧環境(SQL Server 2008 R2)で作成していたスクリプトタスクソース(VB)が、2017仕様ではサポートできないような感じです。



    2019年1月3日 21:00
  • すいません、1点漏れました。

    そして、これはマシン上の唯一のSQL Serverでしょうか。

      -->新韓虚位では、SQL Server 2017は1台のみです。

        ※実際は、Azure IaaS環境になります。

    2019年1月3日 21:03
  • akiyama1192さん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信頂きありがとうございます。

    >※実際は、Azure IaaS環境になります。
    →SSISパッケージをAzure-SQL Serverに展開するには、次のリンクを確認してください。

    How to migrate your SSIS packages / catalog to Azure VM?

    パッケージをプロジェクト展開モデルに変換し、それをMSDBではなく、SSISDBに展開する必要があります。

    うぞよろしくお願いします。


    ~ 参考になった投稿には回答としてマークの設定にご協力ください ~
    MSDN Community Support Haruka

    2019年1月4日 8:22
    モデレータ
  • お世話になっております。

    客先環境以外で、自宅環境でも現象再現しました。
    ※ただ、一発インストール成功でなく、何度かアンインストール・インストールを繰り返して
    いるので、きれいな状況ではない??かもしれません。
     ※客先win 2016環境は一発でインストール(エラーなし)

    windows8.1(64bit)
    SQL Server 2017
    SSMS 17.9.1
    SSDT 2017 15.9.4  ※オフラインインストールでセットアップしています。

    どうも、プロジェクト展開モデルで作成したパッケージをMSDB内にインポート・実行では
    スクリプト読み込みエラーはでないのですが、SSDTで直接ファイル>パッケージで編集
    ・保存したパッケージをインポート・実行するとエラーが発生します。

    <仮定>
    ①SSDTでの直接パッケージ編集:保存で何がしかの問題を抱えているように考えられ、SSMS
    の問題なのか、判断が厳しい状況です。

    ②SSISDBへの展開で回避できるのかは、確認してみます。

    ③何かWin UPDATEが関係するのか、最新の修正プログラムを適用して4確認してみます。

    --------------------------------------------------------------------------
    ユーザー先の状況が、2008R2環境で かつ プロジェクト展開(ソース)環境がない状況で
    パッケージOBJしか管理されていない状況で、SSDTで直接編集すると、スクリプト読み込み
    エラーになるはずであり、ダミーのプロジェクト展開モデルを準備して、既存パッケージの読み込み
    機能で編集・保存したパッケージのインポートでエラーが出ないか、継続して確認してみます。

    2019年1月6日 0:49
  • お世話になっております。

    1点確認なんですが、ご連絡いただいた部分で

    >※実際は、Azure IaaS環境になります。
    →SSISパッケージをAzure-SQL Serverに展開するには、次のリンクを確認してください。

    パッケージをプロジェクト展開モデルに変換し、それをMSDBではなく、SSISDBに展開する必要があります。

    ==>MSDBへのインポートのみでは、Azure Iaas環境でのパッケージは利用できない仕様なんでしょうか?

       客先でのパッケージ移行(Azure SQLServer MSDBへのインポート)で、一部パッケージは動作してはいる状況です。

    2019年1月6日 20:48
  • お世話になっております。

    状況についてですが、確認できた内容をご連絡します。

    ①SSISパッケージをSSDTで直接編集・保存(ファイル>パッケージ選択での編集)を行って、インポートしなおすと、どうやらSSDTでスクリプトタスクを何らかの処理で「壊す」ような状況になり、壊れたまま再度SSISインスタンス内にインポートすると、「スクリプトが読み込みできない」実行エラーになるようです。

    SSMSのインポート時での不具合ではなく、SSDTでのパッケージ直接編集・保存が原因と考えられます。

    --------------------------------------------------------------------------------------------------------

    迂回策:

    ・パッケージをSSDTで直接編集するのでなく、一旦プロジェクトモデル内に「既存パッケージの取り込み」を行うことで、迂回できました。

    ・直接パッケージをファイルで読み込み、インポートした場合、スクリプトタスク自体(コンポーネント)に何かトラブルをかかえてしまう感じで、動作可能なVBソースも、スクリプト編集で開いたときに、Import文(sqlServer・・・のクラス)の認識ができない状況になりました。

    ---------------------------------------------------------------------------------------------------------------------

    一旦回避方法がわかりましたので、当投稿は一旦終了にさせてください。

    お手数おかけし、ありがとうございました。

    皆様にも、同じような操作を行うと、スクリプトタスクに予想外の問題が発生しますので、ご参考までに・・・・

    2019年1月8日 5:59
  • akiyama1192さん、こんにちは。フォーラムオペレーターのHarukaです。
    詳細な手順をご提供いただきありがとうございます。

    SSDTで1つのパッケージが直接開かれると、自動的に最新バージョンに更新されます(SSISTのバージョンによって、SSIS2019/2017となります)。
    ただし、ターゲットサーバーはSQL Server 2016なので、このパッケージをサーバーにデプロイすると、スクリプトは受け入れられません。
    なぜなら、高バージョンのオブジェクトを低バージョンのシステムにインポートすることはできないためです。

    解決策はakiyama1192さんが説明したとおりです。 
    SSISプロジェクトを作成し、TargetServerersionをSQL Server 2016に変更し、既存のパッケージを追加します。
    このようにして、パッケージ/スクリプトのバージョンはターゲットサーバーと一致するようになります。

    うぞよろしくお願いします。


    ~ 参考になった投稿には回答としてマークの設定にご協力ください ~
    MSDN Community Support Haruka

    • 回答としてマーク akiyama1192 2019年1月10日 23:13
    2019年1月9日 2:42
    モデレータ