如果我想在.net框架中引用某些用於我的CLR存儲過程的東西,例如,我必須先將它加載到Sql服務器數據庫中。爲什麼SQL Server沒有預裝.NET Framework for CLR集成?
爲什麼不預裝?它是與性能相關的還是安全問題還是其他?
謝謝。
如果我想在.net框架中引用某些用於我的CLR存儲過程的東西,例如,我必須先將它加載到Sql服務器數據庫中。爲什麼SQL Server沒有預裝.NET Framework for CLR集成?
爲什麼不預裝?它是與性能相關的還是安全問題還是其他?
謝謝。
我想這是出於安全原因,因爲默認情況下不安裝它可以減少任何黑客可用的攻擊面。
可能是因爲它是一個沒有被使用太多的可選功能。然而。
默認情況下它是關閉的,因爲它會增加攻擊面積,並且可能不會在需要的地方使用。許多其他SQL Server的東西也必須特別啓用。
Some fairly basic stuff can be off by default: KB 914277 for "remote access"
繼發於這一點,就不會在很多商店允許的,這使我對我厚臉皮地回答:「因爲開發人員可以用它」。在關係引擎中使用CLR有以下好處:自定義數據類型,自定義聚合等,但它會被濫用,因爲對於許多人來說編寫c#而不是T-SQL更容易。
SQL Server 2000附帶了所有打開的東西,在slammer蠕蟲微軟獲悉他們的教訓之後,在SQL Server 2005上,所有已啓用的功能(如xp_cmdshell,openrowset等)都默認關閉以減少攻擊面。由於相同的原因,CLR也被關閉。