2010-04-23 64 views

回答

5

這些擴展存儲過程允許從SQL Server內部實例化OLE(「ActiveX」)對象。一個典型的用例是創建一個MSXML對象並讓它將一些數據庫數據作爲HTTP POST發送。

在我看來,有兩個問題與等由sp_OACreate程序:

  • 只有校長sysadmin角色可以在默認情況下執行這些。授予和測試這些權限是一種痛苦。 (您必須將用戶添加到主數據庫並授予他們在該數據庫中的權限。)

  • 授予的權限非常寬泛。你不能只說「好的用戶,你有權創建這種對象,並與它做xyz」。相反,你說「好的用戶,你有權創建你想要的任何OLE對象並做你想做的任何事情。」這是一個相當廣泛的畫布。

0

不確定你的嘗試,但對於SQL 2000,你應該閱讀Using extended stored procedures or SP_OA stored procedures to load CLR in SQL Server is not supported

風險是您必須授予SP_OACreate對用戶的EXECUTE權限。 這意味着如果他們隨後找到了執行任意SQL的方法,則可以創建服務器上任何可用庫的實例。 另一個問題是SP_OACreate正在加載庫,所以如果炸彈爆炸,你的服務器也會加載。

+0

我解析的SQL字符串存儲爲ntext在給定的表內,並返回結果作爲行集(客戶端期望在數據表中的結果)。 PS: 執行權限必須授予任何需要執行它們的用戶。 唯一的區別是我能看到的是我們必須明確地設置執行權限給SP_OACreate等。 – TonyP 2010-04-23 14:12:30

相關問題