簡體   English   中英

使用SQL Server SMO在ASP.net中拒絕訪問0x80070005

[英]Access is denied 0x80070005 in ASP.net using SQL Server SMO

我正在嘗試創建一個簡單的Web表單,該表單將在屏幕上為我提供一個服務重啟按鈕。

單擊該按鈕后,我正在創建一個SMO對象以與SQL Server數據庫進行對話,並嘗試停止和啟動MSSQLSERVER服務。 一切正常,直到調用Stop()方法為止,此時將引發異常,指出:

訪問被拒絕。 (來自HRESULT的異常:0x80070005(E_ACCESSDENIED))

該按鈕下的代碼如下:

// connect the to server
ManagedComputer computer = 
    new ManagedComputer("172.16.150.52",@"Administrator","secret");

// return if there is a problem
if (computer.Services["MSSQLSERVER"] == null)
{
    PageErrorMessage = "Bad or missing service \"MSSQLSERVER\"";
    return;
}

// get the SQL Server Service
Service sqlServer = computer.Services["MSSQLSERVER"];

// is the server running?
if (sqlServer.ServiceState == ServiceState.Running)
    sqlServer.Stop();

// wait for it to stop completely
int timeout = 0;
while (sqlServer.ServiceState != ServiceState.Stopped || timeout <= 60)
{
    Thread.Sleep(1000);
    sqlServer.Refresh();
    timeout++;
}

if (timeout > 60)
{
    PageErrorMessage = "Stop operation has timed out after 60secs";
    return;
}

// start it again!
sqlServer.Start();

IP地址,用戶名和密碼均為100%正確。 有誰知道為什么這會引發AccessDenied異常?

聽起來您好像缺少UAC。 通常,要執行系統范圍的任務,例如重新引導,關閉(可能還包括啟動/停止服務),您必須獲得提升的特權,其中包括獲得令牌等。

看看這篇文章-http: //www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx-它對我有幾次幫助。

但是http://www.codeproject.com/KB/vista-security/ElevatedPrivilegesDemand.aspx也可能會有所幫助。

我自己只做過這個客戶端-我不知道在服務器上運行時它是如何工作的。 為此,您可能需要看一下: http : //blogs.msdn.com/b/lightswitch/archive/2011/04/07/how-to-elevate-permissions-in-server-code-ravi- eda.aspx

如果不是代碼而是配置,請查看以下內容: http : //www.lansweeper.com/kb/WMI-Access-is-denied.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM