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