private bool ExecDtspackage(string DTS_HOME,string packageName,string bdzdm)
{
DTS.Package2Class package = new DTS.Package2Class();
try
{
Object MIA=System.Reflection.Missing.Value;
package.LoadFromStorageFile(DTS_HOME+packageName+".dts","","","",packageName,ref MIA);
if(bdzdm!=null&&bdzdm!="")//如果变电站的代码为空就是线路的DTS包
{
package.GlobalVariables.Item("bdzid_scmis").let_Value(bdzdm);
package.SaveToStorageFile("D:\\aa.dts","","",ref MIA,false);
}
package.Execute();
}
catch(Exception er)
{
Response.Write("erro:::"+er.ToString());
return false;
}
finally
{
package.UnInitialize();
}
return true;
}
上面是我C#调用DTS包的代码,现在运行到
package.SaveToStorageFile("D:\\aa.dts","","",ref MIA,false);
时候捕获到异常,我使用Response.Write("erro:::"+er.ToString());显示异常错误信息,在IE中显示以下信息:
erro:::System.Runtime.InteropServices.COMException (0x80030005): 拒绝访问。 at DTS.Package2Class.SaveToStorageFile(String UNCFile, String OwnerPassword, String OperatorPassword, Object& pVarPersistStgOfHost, Boolean bReusePasswords) at DtsWeb.ExecDts.ExecDtspackage(String DTS_HOME, String packageName, String bdzdm) in d:\dtsweb\execdts.aspx.cs:line 120false请指点为什么会这样,直接使用SQLServer执行aa.dts包是正常运行的.
{
DTS.Package2Class package = new DTS.Package2Class();
try
{
Object MIA=System.Reflection.Missing.Value;
package.LoadFromStorageFile(DTS_HOME+packageName+".dts","","","",packageName,ref MIA);
if(bdzdm!=null&&bdzdm!="")//如果变电站的代码为空就是线路的DTS包
{
package.GlobalVariables.Item("bdzid_scmis").let_Value(bdzdm);
package.SaveToStorageFile("D:\\aa.dts","","",ref MIA,false);
}
package.Execute();
}
catch(Exception er)
{
Response.Write("erro:::"+er.ToString());
return false;
}
finally
{
package.UnInitialize();
}
return true;
}
上面是我C#调用DTS包的代码,现在运行到
package.SaveToStorageFile("D:\\aa.dts","","",ref MIA,false);
时候捕获到异常,我使用Response.Write("erro:::"+er.ToString());显示异常错误信息,在IE中显示以下信息:
erro:::System.Runtime.InteropServices.COMException (0x80030005): 拒绝访问。 at DTS.Package2Class.SaveToStorageFile(String UNCFile, String OwnerPassword, String OperatorPassword, Object& pVarPersistStgOfHost, Boolean bReusePasswords) at DtsWeb.ExecDts.ExecDtspackage(String DTS_HOME, String packageName, String bdzdm) in d:\dtsweb\execdts.aspx.cs:line 120false请指点为什么会这样,直接使用SQLServer执行aa.dts包是正常运行的.
{
DTS.Package2Class package = new DTS.Package2Class(); //在使用前请添加引用dtspkg.dll文件;
Object MIA=System.Reflection.Missing.Value;
package.LoadFromSQLServer("zg","ZG", "123456", DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, "", "","", "Jgdm_DTS",ref MIA);
package.Execute();
//package.UnInitialize();
//package = null;
Response.Redirect("JgdmRule.aspx"); }Jgdm_DTS是包名,最好是设计器设计完成的包。
该段程序在家机器测试通过。win2003,sql,vs2005,iis6.0. fw 2.0
不过很奇怪,在我公司电脑包没执行成功。
以上代码供参考,同时希望高手完善。