我读过的所有内容都表明,在创建托管存储过程时,右键单击Visual Studio并选择deploy.这工作正常,但如果我想将它部署到Visual Studio之外的许多不同位置呢?我尝试使用在SQL中构建的项目的dll创建程序集,虽然它确实添加了程序集,但它没有创建程序集之外的程序.有没有人想过如何直接在SQL中执行此操作,而不使用Visual Studio?
将程序集DLL文件复制到各种服务器上的本地驱动器.然后使用数据库注册程序集:
create assembly [YOUR_ASSEMBLY] from '(PATH_TO_DLL)'
...然后你创建一个引用DLL中相应公共方法的函数:
create proc [YOUR_FUNCTION] as external name [YOUR_ASSEMBLY].[NAME_SPACE].[YOUR_METHOD]
务必使用[括号,特别是在NAME_SPACE周围.命名空间中可以包含任意数量的点,但SQL标识符不能,除非部分由方括号明确设置.当我第一次使用SQL CLR时,这是许多令人头疼的问题的根源.
需要说明的是,[YOUR_ASSEMBLY]是您在SQL中定义的名称; [NAME_SPACE]是DLL中的.NET命名空间,可以在其中找到您的方法; 和[YOUR_METHOD]只是该命名空间中方法的名称.