sql-server – 为其他数据库中的内部存储过程设置中央CLR存储过程/函数存储库以供使用?

我想使用我在C#CLR中开发的代码在系统上的所有数据库中使用,这样我就不必将每个代码都设置为可信并打开CLR并在每个数据库中保留一堆相同的代码.

从行政和安全的角度来看,有最好的方法吗? CLR函数非常基本,如断字符,电子邮件验证,url en / decode,base64等.我希望每个数据库中只有dbo模式才能访问这些函数.

>有什么简单的方法可以做到这一点吗?
>另外我不清楚CLR DLL是否嵌入,如果我移动数据库,它标记,或者我也必须移动dll.

谢谢

最佳答案
在我们公司,我们有精确的设置.创建CLR程序集时,程序集的二进制表示形式存储在您创建它的数据库中.如果您在任何时间点移动数据库,这使您可以随身携带它(甚至编写脚本).

几个月前,我们的数据中心被洪水淹没 – 填满了几台装满水的服务器.当我重建它们时,我只使用了前一天晚上使用的数据库备份.到目前为止我们没有任何问题..(触摸木头!)

我不确定从安全角度来看这是否正确,但我们授予对CLR procs等访问权限的方式是在共享数据库中创建角色,然后将其他数据库中的用户添加到该角色.然后在CLR过程中授予该角色执行权.

如果CLR尝试执行访问包含在其中的数据库之外的资源之类的操作,则可能存在访问问题,但您可以在创建组件时设置组件的权限.以下链接有更多关于权限的信息,但我可以在这里解释:

http://msdn.microsoft.com/en-us/library/ms345101.aspx

我希望这对你有所帮助.

转载注明原文:sql-server – 为其他数据库中的内部存储过程设置中央CLR存储过程/函数存储库以供使用? - 代码日志