【发布时间】:2015-05-15 21:38:55
【问题描述】:
我正在尝试使用以下代码从网站运行 SSIS 包:
Process process = new Process();
try
{
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = "dtexec";
process.StartInfo.Arguments = "/F " + ConfigurationManager.AppSettings["SSISLocation"] + packageName + " /ConF \"" + configLocation + "\"";
System.IO.File.AppendAllText(ConfigurationManager.AppSettings["SSISLocation"] + "Log.txt", "/F " + ConfigurationManager.AppSettings["SSISLocation"] + packageName + " /ConF \"" + configLocation + "\"\r\n");
process.Start();
System.IO.File.AppendAllText(ConfigurationManager.AppSettings["SSISLocation"] + "Log.txt", process.StandardOutput.ReadToEnd() + "\r\n");
process.WaitForExit();
return true;
}
这失败了,我的日志返回: 由于错误 0x800401F3,无法创建 DTS.Application
我已经用谷歌搜索了这个,但没有太多帮助,所以我通过命令行运行了这个包。所以我认为它必须是权限,所以我运行 psexec 来让我在网站运行的网络服务用户下获得一个命令窗口。它仍然有效,但仍然无法通过我的网站工作。
我不是运行 64 位的,机器本身是 32 位的,所以即使我运行它也无法在命令行上运行。
被访问的文件夹对“Everybody”拥有完全权限
我正在运行 sql server 2005。
我正在运行 Windows Server 2003
我已经对所有组件设置了延迟验证,而不会引起问题。
我已经为这两种方法运行了进程监视器,并且调用看起来几乎相同,但无论如何它们都在这里:
通过命令行:
父 PID:4292,命令行:dtexec /F c:\SSIS\packagename.dtsx /ConF "c:\SSIS\1cee35d1-b181-4ee7-a1de-eb9fc9c5ebe7.dtsConfig",当前目录:C:\WINDOWS \system32,环境: =C:=C:\WINDOWS\system32 =退出代码=00000000 ALLUSERSPROFILE=C:\Documents and Settings\所有用户 ClusterLog=C:\WINDOWS\Cluster\cluster.log CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=服务器名 ComSpec=C:\WINDOWS\system32\cmd.exe FP_NO_HOST_CHECK=否 lib=C:\Program Files\SQLXML 4.0\bin\ NUMBER_OF_PROCESSORS=2 操作系统=Windows_NT 路径=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Dell\SysMgt\oma\bin;C:\Program Files\Microsoft SQL Server\80\Tools \Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\ Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\Microsoft\ Web 平台安装程序\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.VBS;.PSC1 PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 37 Stepping 1, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=2501 ProgramFiles=C:\程序文件 提示=$P$G PSModulePath=C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ 系统驱动器=C: SystemRoot=C:\WINDOWS TEMP=C:\DOCUME~1\NETWOR~1\LOCALS~1\Temp TMP=C:\DOCUME~1\NETWOR~1\LOCALS~1\Temp USERDOMAIN=NT 权限 用户名=网络服务 USERPROFILE=C:\Documents and Settings\NetworkService windir=C:\WINDOWS
通过网站:
父 PID:3692,命令行:"dtexec" /F c:\SSIS\RNReport.dtsx /ConF "c:\SSIS\1cee35d1-b181-4ee7-a1de-eb9fc9c5ebe7.dtsConfig",当前目录:c: \windows\system32\inetsrv,环境: ALLUSERSPROFILE=C:\Documents and Settings\所有用户 APP_POOL_ID=AppPoolName ClusterLog=C:\WINDOWS\Cluster\cluster.log CommonProgramFiles=C:\Program Files\Common Files COMPUTERNAME=服务器名 ComSpec=C:\WINDOWS\system32\cmd.exe FP_NO_HOST_CHECK=否 lib=C:\Program Files\SQLXML 4.0\bin\ NUMBER_OF_PROCESSORS=2 操作系统=Windows_NT 路径=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Dell\SysMgt\oma\bin;C:\Program Files\Microsoft SQL Server\80\Tools \Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\ Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;C:\WINDOWS\system32\WindowsPowerShell\v1.0;C:\Program Files\Microsoft\ Web 平台安装程序\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.VBS;.PSC1 PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 37 Stepping 1, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=2501 ProgramFiles=C:\程序文件 PSModulePath=C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\ 系统驱动器=C: SystemRoot=C:\WINDOWS TEMP=C:\WINDOWS\TEMP TMP=C:\WINDOWS\TEMP USERPROFILE=C:\Documents and Settings\默认用户 windir=C:\WINDOWS
任何帮助都将不胜感激。
干杯
【问题讨论】:
-
感谢您的回复,我已经看过这篇文章,但是该程序包在命令行下的服务器上成功运行,因此必须注册所有内容,并且我正在使用相同的用户运行它。非常感谢您的回复,尽管这是一个非常具体的问题。
-
您是否在无人看管的情况下运行它?您可以尝试在 c:\ssis 而不是 c:\windows\system32 中启动该过程吗
-
我应该能够在那个文件夹中运行它,是的,让我试一试,然后回复你。谢谢
标签: c# sql-server-2005 ssis dtexec