我在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);
答案 0 :(得分:1)
检查您默认使用的DTEXEC版本(start-run:cmd,dtexec)。我不久前有一个错误,当时我在其中一台服务器上安装了ServicePacks。然后我安装了几个版本的dtexec.exe。一个是从cmd.exe执行时的默认值,一个是从API运行时的默认值。搜索服务器时,您找到多少个不同的“dtexec.exe”文件?
答案 1 :(得分:1)
宾果; SSIS通过查看
中的注册表项来说明它是哪个版本HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90
我们的服务器强化过程删除了用户组对该密钥具有读取权限的继承权限。它没有给出无法读取此密钥的错误,而是决定它是一个评估副本,因为我们已经安装了180天,它已经过期了。
将permisisons恢复到特定帐户可解决问题。
答案 2 :(得分:0)
如果我以本地管理员身份运行该进程,则运行正常!
所以如果我作为本地管理员运行,我就不会得到“评估期已过期” - 奇怪。