请教C#中调用和执行Sql Server DTS包的问题

scute 2004-06-28 01:26:25
已经用Sql Server 2000的DTS设计器设计了一个DTS包,存放在Sql Server中,

设计的这个DTS包的功能是从数据库查询得到一些数据,再把这些数据转换存入一个.csv格式的文件中

该DTS包在Sql Server中执行是没有问题的,能成功导出.csv文件

现在希望从C#中调用和执行这个DTS包,从网上查了一些资料,微软建议的一种方法是:
添加对dtspkg.dll的引用
创建Package2对象
通过LoadFromSqlServer方法加载DTS包
通过Execute方法执行DTS包

但是我按照这种方法写出来的代码就是有问题。

根据这种方法写的代码是这样的:
DTS.Package2Class objPackage = new Package2Class();
object pVarPersistStgOfHost = null;
objPackage.LoadFromSQLServer("localhost","sa","sa",DTSSQLServerStorageFlags.DTSSQLStgFlag_Default,null,null,null,"myPackageName",ref pVarPersistStgOfHost);
objPackage.Execute();
objPackage.UnInitialize();
objPackage = null;

程序执行起来就是不行,没反应,不知道哪里还有问题?

请高手帮忙看一看,多谢了!

微软网站上找到的ppt
http://download.microsoft.com/download/1/9/8/198f94e8-a101-4132-a309-ff1c297193a5/WCD111802.exe
...全文
321 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ls_hndd 2004-09-26
  • 打赏
  • 举报
回复
up
chsfly 2004-06-28
  • 打赏
  • 举报
回复
关注
scute 2004-06-28
  • 打赏
  • 举报
回复
是ASP.NET的一个页面的后台代码,那段代码放在了一个按钮的点击事件处理程序里,没有加try/catch,DTS包也没有使用变量,也没有处理Events。

那我加try/catch和Events处理试试看
saucer 2004-06-28
  • 打赏
  • 举报
回复
where are you running the code? a console app? did you have try/catch block? if so, can you check what detailed exception it throws? are you using any variable?

also see
Execute Package
http://sqldev.net/dts/ExecutePackage.htm

Using DTS from C#
http://www.c-sharpcorner.com/Code/2002/Sept/DTSnCS.asp

HOW TO: Handle Data Transformation Services Package Events in Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;en-us;319985
scute 2004-06-28
  • 打赏
  • 举报
回复
差不多解决了,问题出在权限上面。

DTS包运行时,导出文件的目录指定死了,比如桌面。

Console的C#工程运行时,基于的是windows的administrator帐户的权限,所以能成功的导出.csv文件到指定的目录。

如果程序在ASP.NET中运行时,由于存在某些权限方面的限制(具体机制我还不清楚),无法将导出的文件写到指定的目录。

后来也是碰巧才发现并解决这个问题的,我把windows下的ASPNET这个帐号改成属于Administrators组(原来是属于Users组)之后,就可以成功的导出文件。

其中的安全机制、安全体系现在还没搞清楚,只知道
aspnet_wp.dll是以ASPNET帐号运行的,权限有限。
可以在machine.config中指定另外的帐号:
<!-- machine.config file -->
<system.web>
<processModel
enable="true"
userName="domain\user"
password="password"
/>
</system.web>

machine.config文件在\%windows%\Microsoft.NET\Framework\Version\Config文件夹

MSDN中有关于ASP.NET 进程标识的描述
whxleem 2004-06-28
  • 打赏
  • 举报
回复
你调用sqldemo.dll看它有没有方法执行你的DTS
scute 2004-06-28
  • 打赏
  • 举报
回复

HOW TO: Handle Data Transformation Services Package Events in Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;en-us;319985

我根据这篇文章中的例子,新建了一个console的C#工程,执行我的那个DTS包没有问题
但是在我的ASP.NET的代码中总是不行,真是奇怪啊,问题会出在哪里呢?

110,580

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧