views:

1055

answers:

3

Hi all

I have an issue executing a package via the API at Microsoft.SqlServer.Dts.Runtime. I have 4 SQL servers that can potentially execute my package in 2 clusters. On the passive nodes in each cluster, execution fails - reported error is that SSIS evaluation period has expired. On the active nodes, it works fine. I don't think its to do with the cluster, more that SSIS itself wasn't originally installed on the active nodes. We installed it later. On Friday we uninstalled and reinstalled SSIS on the passive nodes making sure that we using the correct install media but nothing has changed. We also tried failing over and running again with the same results (failed on the now-active nodes) Interestingly I can run the package from SSMS using the Execute Package Utility on the problem nodes. But calling it from the .net API doesn't work. Any ideas? I can't find anything! Code for the API call below...

thanks!

Ben

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);
+1  A: 

Check what version of DTEXEC you are using as default (start-run: cmd, dtexec). I had an error a while ago when i had innstalled ServicePacks on one of ther servers. I then had several versions of dtexec.exe innstalled. One was default when executing from cmd.exe and one was default when running from API. How many different "dtexec.exe" files do you find when searching the servers?

ThorHalvor
There's two - in each of the following foldersD:\MSSQL2005\90\DTS\BinnD:\MSSQL2005 (x86)\90\DTS\BinnI'll try calling them both....
Ben
Both executables work the same, good call though.Any other thoughts?
Ben
A: 

This runs fine if I run the process as the local administrator!

So I do not get "evaluation period has expired" if I run as a local admin - bizarre.

Ben
+1  A: 

Bingo; SSIS tells which edition it is by looking at the registry key at

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90

Our server hardening process removed the inherited permission for the users group to have read access to this key. Instead of giving an error that it couldn't read this key, it decided it was an evaluation copy and as we'd had it 180 days since install, it had expired.

Restoring permisisons to the specific account fixed the issue.

Ben