调试基于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
 
注意:当源代码变化的时候一定要重新创建
posted @ 2012-01-29 23:52  老高dotnet实践  阅读(389)  评论(0编辑  收藏  举报