1

我在通过 Microsoft.SqlServer.Dts.Runtime 的 API 执行包时遇到问题。我有 4 个 SQL 服务器,它们可能会在 2 个集群中执行我的包。在每个集群中的被动节点上,执行失败 - 报告的错误是 SSIS 评估期已过期。在活动节点上,它工作正常。我不认为它与集群有关,更多的是 SSIS 本身最初并没有安装在活动节点上。我们后来安装了它。周五,我们在被动节点上卸载并重新安装了 SSIS,确保我们使用了正确的安装介质,但没有任何改变。我们还尝试故障转移并再次运行,结果相同(在现在活动的节点上失败)有趣的是,我可以使用问题节点上的执行包实用程序从 SSMS 运行包。但是从 .net API 调用它不起作用。有任何想法吗?我什么也找不到!下面的 API 调用代码...

谢谢!

Package pck;

DTSExecResult execResult;

Application app = new Application();

//Load package from SQL Server

pck = app.LoadFromSqlServer(jobParams.SSISPackagePath, jobParams.ServerName, null, null, null);

//Assign values to the package variables

pck.Variables["FlatFileInputPath"].Value = destinationFilePath;




//Execute the package

logger.WriteInfo("Started executing SSIS package...");

execResult = pck.Execute(null, null, new SSISEventsSink(logger), null, null);
4

3 回答 3

1

检查您默认使用的 DTEXEC 版本(开始运行:cmd、dtexec)。不久前,当我在其中一台服务器上安装 ServicePacks 时,我遇到了一个错误。然后我安装了几个版本的 dtexec.exe。一个是从 cmd.exe 执行时的默认设置,一个是从 API 运行时的默认设置。在搜索服务器时,您发现了多少个不同的“dtexec.exe”文件?

于 2009-02-09T14:58:52.690 回答
1

答对了; SSIS 通过查看注册表项来判断它是哪个版本

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90

我们的服务器加固过程删除了用户组对该密钥的读取权限的继承权限。它没有给出无法读取此密钥的错误,而是认为它是一个评估副本,因为我们在安装 180 天后拥有它,它已经过期。

恢复特定帐户的权限可解决此问题。

于 2009-02-12T14:17:12.523 回答
0

如果我以本地管理员身份运行该过程,这运行良好!

因此,如果我以本地管理员身份运行,我不会得到“评估期已过” - 奇怪。

于 2009-02-11T16:45:44.313 回答