none
關於xp_cmdshell的權限設定

    問題

  • 請參考

    http://support.microsoft.com/kb/890775/zh-tw

     

    其實線上很多文章都建議把xp_cmdshell關掉

    但是因為有不得已的苦衷我不得不使用它

     

     

    我使用的混和認證

    建立一個SQL帳號後

    依照線上文件

    給了master的存取權

    也給了xp_cmdshell EXEC的權限

     

    但是依然不能使用xp_cmdshell

     s

     

    錯誤訊息如下:

    SQL Exception: 執行SQL預存程序時,發生SQL Error例外事件(BulkSend:134): 由於目前的安全性內容不是系統管理員 (sysadmin),並且沒有正確設定 Proxy 帳戶,所以無法執行  xp_cmdshell 。如需相關資訊,請參考線上手冊以搜尋  xp_sqlagent_proxy_account 的相關主題。

     

    問題1:

    我有辦法設定非sysadmin的使用者有權執行xp_cmdshell嗎?

    問題2:

    設定Proxy帳戶時,可以設定非網域帳號嗎?也就是說我的 SQLSERVER可以是獨立伺服器嗎 ?

    2007年5月16日 上午 01:39

解答

  • 您好:
    1. 請參考:無法在 SQL Server 2000, 網域使用者執行 xp_cmdshell 延伸預存程序即使使用者具有使用權限
    2. 可以,設定的語法如下所示:
      xp_sqlagent_proxy_account 語法
      xp_sqlagent_proxy_account 'set', '<主機名稱>', '<代理者帳號>', '<代理者密碼>'

      下面的範例,表示替主機名稱為 SQL2K,其內的使用者帳號 Alex,密碼 E04sU3w87@ 指定為代理者:
      xp_sqlagent_proxy_account 使用範例
      xp_sqlagent_proxy_account 'set', 'SQL2K', 'Alex', 'E04sU3w87@'

      於設定完成之後,可以使用如下的指令來查詢:
      查詢是否設定成功
      xp_sqlagent_proxy_account 'get'

      其結果應該如下:
      查詢設定結果
      Domain       Username
      ---------------------------------------
      SQL2K       Alex
    請注意:
    您同時僅能替獨立伺服器設定一個代理者帳號,也就是說,若再設定一個新的代理者帳號,就會以最後一次指定的帳號為準!
    2007年5月16日 上午 02:34
    版主