我想創建一個簡單的Web窗體,它會給我一個屏幕上的服務重啓按鈕。在ASP.net中使用SQL Server SMO訪問被拒絕0x80070005
單擊該按鈕後,我創建了一個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
異常?
這是一個操作系統錯誤,而不是一個WMI或Smo的錯誤,所以你可能會在ServerFault上獲得更好的響應。看到這裏:http://technet.microsoft.com/en-us/library/ee692772.aspx#EEAA – Pondlife 2011-12-21 13:35:50
我不知道它的操作系統是這樣的。我猜OP沒有實現處理UAC的代碼。 – 2011-12-24 11:47:29