2012-05-30 63 views
2

我在數據庫觸發器中使用xp_cmdshell來啓動exe文件。訪問被拒絕爲管理員用戶啓用xp_cmdshell

xp_cmdshell已啓用(它可以執行簡單的cmd命令,如'echo')。但是當我嘗試通過xp_cmdshell啓動exe時,訪問被拒絕。

我是數據庫管理員。我可以直接通過cmd啓動exe。任何人都知道我爲什麼被拒絕以及如何修復它?

+0

你得到了什麼確切的錯誤信息? –

+0

「訪問被拒絕。」 –

+0

該消息沒有更多的細節?它並不表示它是否在談論訪問存儲過程或文件系統? –

回答

6

可能不足NTFS權限。確保SQL Server正在運行的'用戶帳戶'具有* .EXE(和任何相關文件)的權限(讀取+執行)

+0

我正在測試我自己的數據庫。而exe是由我自己創建的。我有權讀取和執行。 –

+0

@JoshuaH。您有,但運行SQL Server的用戶(例如LocalSystem或NetworkService)? –

+2

+1 JMC。我同意這聽起來像MSSQLServer服務正在運行的服務帳戶,因爲它沒有權限。打開服務並檢查SQL Server服務帳戶的登錄屬性。 – brian

5

使用xp_cmdshell運行「whoami」,然後檢查有效權限exe文件中聲明的用戶以及它訪問的任何資源。 很可能是像localsystem這樣的帳戶正在被用來通過xp_cmdshell運行進程。

EXEC xp_cmdshell 'whoami' 
+0

我收到此錯誤。 「whoami不被識別爲內部或外部命令,可操作程序或批處理文件。 –

+1

對不起,您可能需要先安裝它,請點擊此處鏈接:http://serverfault.com/a/9984 –

+0

我已經安裝了該工具。 whoami在我以cmd執行時工作正常。但它在xp_cmdshell失敗('whoami'不被識別爲內部或外部命令)。你知道爲什麼會發生這種情況嗎? –

0

不確定,但我相信觸發器是由用戶運行觸發該觸發器的SQL命令運行的。

用戶是否將SQL命令發佈爲Windows用戶或SQL用戶?如果它是一個SQL用戶,則需要設置一個「SQL代理」。 SQL代理用於告訴SQL將使用哪個Windows用戶訪問文件系統。

希望這有助於

伊夫

0

我得到ACCESS試圖運行BCP,然後複製時被拒絕。

我發現那是什麼的xp_cmdshell開始在C:\ Windows \ System32下

我修改CMD文件來改變我的工作文件夾

L: CD L:\ myworkingfolder

這解決了我的問題,事件雖然我的sqlagent是一個本地管理員,我已經完全運行我的複製命令。

相關問題