私は大きな問題を抱えており、何を確認すればよいかさえわかりません。最初に「スクリプトの実行」タスク (ST_2275f0b3eced4c84bd35d4c826cab866.csproj という名前) を実行する大きな SSIS パッケージがあり、C# で次のように記述されています。
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using Microsoft.Win32;
namespace ST_2275f0b3eced4c84bd35d4c826cab866.csproj
{
[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
Dts.Variables["user_uca"].Value = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\TDCredentials").GetValue("user_uca").ToString();
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}
要点は、特定の Windows レジストリ キーからのデータを使用して SSIS パッケージ変数を読み込むことです。問題は、Visual Studio から SSIS パッケージを実行したときに動作することです。しかし、その SSIS パッケージ用に作成された Sql Agent ジョブを実行すると、次のエラーが表示されます: System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。---> System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。ST_2275f0b3eced4c84bd35d4c826cab866.csproj.ScriptMain.Main() でこのエラーは、Windows レジストリ キーが存在しないことを意味します。特定の Windows レジストリ キーを意図的に削除してから、Visual Studio から SSIS パッケージを実行すると、正確なエラー メッセージが表示されるためです。私ができることをすべてチェックしました:それらのWindowsレジストリキーを持つSQLサーバーとホスト-それらは同じです。また、これらのキーに「Everyone」のアクセス許可を与えました。また、すべてのユーザーにキーが存在することを確認するために、HKLocalMachine にキーを配置しましたが、同じエラーが発生しました。ヒントはありますか?! 前もってありがとう、ボグダン。