C#中執行DTS的問題,請關注!

以下代碼爲調用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的方式登陸了啊,如果誰能說清楚,請回復一下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章