Sql-Server
為其他數據庫中的內部儲存過程設置一個中央 CLR 儲存過程/函式儲存庫以供使用?
我想使用我在 C# CLR 中開發的程式碼在系統上的所有數據庫中使用,這樣我就不必將每個數據庫設置為可信任並打開 CLR 並在每個數據庫中保留一堆相同的程式碼.
從管理和安全的角度來看,有沒有最好的方法來做到這一點?CLR 函式非常基本,如字元串中斷、電子郵件驗證、url en/decode、base64 等。我希望只有每個數據庫中的 dbo 模式能夠訪問這些函式。
- 有什麼簡單的方法可以做到這一點嗎?
- 我也不清楚 CLR dll 是否被嵌入,如果我移動數據庫,它會跟著標記,還是我也必須移動 dll。
謝謝
在我們公司,我們有確切的設置。當您創建 CLR 程序集時,程序集的二進製表示將儲存在您創建它的數據庫中。如果您在任何時間點移動數據庫,這使您可以隨身攜帶(甚至編寫腳本)。
幾個月前,我們的數據中心被洪水淹沒了——幾台伺服器被灌滿了水。當我重建它們時,我只使用前一天晚上拍攝的數據庫備份。到目前為止,我們還沒有遇到任何問題..(觸摸木頭!)
我不確定從安全形度來看這是否正確,但我們授予對 CLR procs 等的訪問權限的方式是在共享數據庫中創建一個角色,然後將其他數據庫中的使用者添加到該角色。然後授予該角色在 CLR procs 上執行。
如果 CLR 嘗試訪問它所包含的數據庫之外的資源,則可能存在訪問問題,但您可以在創建程序集時設置程序集的權限。下面的連結包含更多關於權限的資訊,但我無法在此處解釋:
http://msdn.microsoft.com/en-us/library/ms345101.aspx
我希望這對你有幫助。