T-SQL執行Web Services所需權限
最近因為工作需要,試了一下在T-SQL中呼叫Web Services
了解了一下,其實是沒問題,但悲慘的是Schema而產生的問題
後經高人指點,以授權解決,為免日後忘記,趕快筆記一下
以T-SQL執行Web Services會用到下列幾個系統Procedure
EXEC sys.sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
EXEC sys.sp_OAMethod @obj,'Open', NULL, 'GET', @sUrl, false
EXEC sys.sp_OAMethod @obj,'send'
EXEC sys.sp_OAGetProperty @obj, 'responseText', @response OUT
而Help中又指出,sp_OACreate需有Sysadmin伺服器角色權限
不巧的是公司的系統設計不是用dbo這schema
而只要一加入sysadmin這角色時,系統預設會把account轉至dbo,schema相對應的也變成dbo
怎麼設預設schema都沒有用
經測試後,改以單獨授權即可,並不需要加入sysadmin這角色,這樣帳號所使用的帳號預設Schema即可發生作用
GRANT EXECUTE ON sys.sp_OACreate TO 帳號;
GRANT EXECUTE ON sys.sp_OADestroy TO 帳號;
GRANT EXECUTE ON sys.sp_OAGetErrorInfo TO 帳號;
GRANT EXECUTE ON sys.sp_OAGetProperty TO 帳號;
GRANT EXECUTE ON sys.sp_OAMethod TO 帳號;
GRANT EXECUTE ON sys.sp_OASetProperty TO 帳號;
GRANT EXECUTE ON sys.sp_OAStop TO 帳號;
GO
打雜打久了,就變成打雜妹
程式寫久了,就變成老乞丐