调试基于clr管理的sqlserver存储过程
1,exec sp_configure 'show advanced options', '1';
go
reconfigure;
go
exec sp_configure 'clr enabled', '1'
go
reconfigure;
exec sp_configure 'show advanced options', '1';
go
2,我执行已经写好的存储过程出现错误
消息 6522,级别 16,状态 1,过程 kaijiang,第 0 行
在执行用户定义例程或聚合 'kaijiang' 期间出现 .NET Framework 错误:
System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
System.Security.SecurityException:
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
at System.Security.PermissionSet.Demand()
at System.Data.Common.DbConnectionOptions.DemandPermission()
at System.Data.SqlClient.SqlConnection.PermissionDemand()
at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at StoredProcedures.GetData(String sql)
at StoredProcedures.KaiJiang(String flag, String murl)
3,我执行
alter database fh set trustworthy on
4,ALTER ASSEMBLY asskaijiang
WITH PERMISSION_SET=EXTERNAL_ACCESS; 想设置为外部访问
出现错误:
针对程序集 'KaiJiang' 的 ALTER ASSEMBLY 失败,因为程序集 'KaiJiang' 未获授权(PERMISSION_SET = EXTERNAL_ACCESS)。 当符合以下两个条件之一时,将对程序集授权: 数据库所有
者(DBO)具有 EXTERNAL ACCESS ASSEMBLY 权限,而且数据库的 TRUSTWORTHY 属性处于打开状态;或者,程序集签名时所使用的证书或非对称密钥所对应的登录名具有 EXTERNAL
ACCESS ASSEMBLY 权限
5,我执行了
USE FH
GO EXEC sp_changedbowner 'SA'
6 OK
注意:当源代码变化的时候一定要重新创建