UP TO YOU 随心 • 索遇

Tasting The Skills 品味技巧,品味人生

导航

C#中执行DTS的执行权限问题

Posted on 2005-04-01 21:42  Keith P.R.C  阅读(463)  评论(0)    收藏  举报
以下代码为调用DTS的写法:
DTS.Package2Class package=new DTS.Package2Class();
   
try
   
{
    Object MIA
=System.Reflection.Missing.Value;
    package.LoadFromSQLServer(
"(local)"
     
"sa""000", DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, """",
     
"""TEST",ref MIA);
    package.Execute();
   }

   
catch(Exception ex)
   
{
    
throw ex;
   }

   
finally
   
{
    package.UnInitialize();
    package
=null;
   }

上述程序写在winform.exe项目里运行 ,没有任何问题,但如何写在asp.net或webservice里,则有问题了。后者必须在SQL SERVER里增加MachineName\ASPNET的用户登陆权限并且为该帐号设置必须访问的DB的db_owner权限,否则无法调用。

注意,在windows2003上并不是MachineName\ASPNET这个帐号,它是NT AUTHORITY\NETWORK SERVICE。是不是很奇怪?恶心?不知道为什么会改成这样,没关系,你可以在程序里用这样的方法来获得当前运行ASP.NET的帐号究竟是什么:Context.Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);

另外也可以参考http://tech.ccidnet.com/pub/article/c1111_a76467_p1.html里的描述。

我想这就是权限设置的问题吧,具体为什么这样,我也不大清楚,因为代码里已经很清楚的指明用SA的方式登陆了啊,如果谁能说清楚,请回复一下。