SQL Server CLR 调用Web 需要注意的几个问题

2021/5/2 2

用visual studio 创建sql server项目,然后编写调用web的过程是很简单的,在部署前有几个问题需要注重:


1.目标数据库实例需要启用clr集成. 
假如没启用,可以在 sql server 外围应用配置器 里去启用
或者使用以下语句:

 

sp_configure ' clr enabled ' 1 
go 
reconfigure 
go

2.目标数据库的可信任属性需要设为false,可以使用以下语句启用:

alter database dbname set trustworthy on

否则在调用对应的方式时会报错:
system.security.securityexception: request for the permission of type 'system.security.permissions.environmentpermission, mscorlib, version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089' failed.

3.确保部署程序集时所使用的账号是目标数据库的所有者,如不是可以使用以下语句:

exec sp_changedbowner ' login_name '

否则部署时会报错: 
针对程序集 'xxx' 的 create assembly 失败,因为程序集 'xxx' 未获授权(permission_set = unsafe)。 当符合以下两个条件之一时,将对程序集授权: 数据库所有者(dbo)具有 unsafe assembly 权限,而且数据库的 trustworthy 属性处于打开状态;或者,程序集签名时所使用的证书或非对称密钥所对应的登录名具有 unsafe assembly 权限。

当然部署账号需要有创建程序集的权限.

4.程序集的权限级别必须设为 external access

否则在部署的时候会报错:
system.security.securityexception: request for the permission of type 'system.security.permissions.environmentpermission, mscorlib, version=2.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089' failed.