2010-08-06 54 views
0

当我试图执行clr sproc(仍然在C#IDE中),我有权限错误。错误是“请求权限的类型'System.Data.SqlClient.SqlClientPermission,...失败”,我在网上看了一遍,它似乎扔回IIS设置(我不使用IIS也不是我使用网站,所以这些解决方案不适用于我),现在我尝试了两个单独的连接字符串(context connection = true,以及我通常这样做的方式,这是一个很长的说它是一个可信连接和数据库名称),但都返回相同的权限失败。CLR Sproc权限

任何帮助,将不胜感激

+0

你确定你的SQL服务器用户拥有正确的权限吗?通常,当我过去得到这个时,这是因为用户(使用指定的UName&PWord)或我的AD用户尚未在我试图访问的SQL Server实例(或数据库)上设置。 – AllenG 2010-08-06 20:51:17

+0

是的,因为另一个应用程序调用和从数据库的同一个实例(独立的VS实例,因为一个程序是一个设计的形式,有问题的是CLR的Sproc尝试尝试)没有任何问题 – CSharpProgrammer 2010-08-06 20:55:14

+0

因此,我根据教程(http://www.codeproject.com/KB/cs/CLR_Stored_Procedure.aspx)找到了一个不同的教程,并重新编写了所有的教程,但是这些教程来自http://msdn.microsoft.com/en-us/库/ 5czye81z(VS.80).aspx没有工作(它给了安全性),所以我不知道发生了什么。我想知道,所以我会保持这个开放,希望有人能够清除它 – CSharpProgrammer 2010-08-09 14:22:59

回答

1

在您的SQL Server实例中是否启用CLR?

你可以对你的SQL服务器上运行下面的SQL语句启用:

sp_configure的“CLR启用”,1 GO

一旦这跑,大会需要被注册到SQL:

CREATE ASSEMBLY ASSEMBLYNAME FROM'Full path to assembly'--eg C:\ sproc.dll 的PERMISSION_SET =安全 GO

像这样创建存储过程(如果你还没有的话) CREATE PROC clrsp_InsertEmployee (
逗号分隔参数)--Parameters例如@city VARCHAR (25),@state VARCHAR(2)
AS外部NAME AssemblyName.StoredProcedures.Function 转到

让我知道,如果这有助于。除此之外,您可能需要根据您用来访问SQL的用户对表设置权限。

+0

那么我做了第一个汇编语句,它说已经有一个存储过程与已经注册的名称相同,所以我发现(My错误的是没有及时看到它),当我尝试运行它时,它仍然给我安全错误。既然它已经显示,我不应该需要做创建,对吗? 感谢您的帮助,您可以提供 – CSharpProgrammer 2010-08-09 13:44:24

0

说出你的DBA关于你的用户数据库权限。这可能不是代码中的问题。

+0

这是我的机器上的本地数据库。从开发环境复制用于测试的特定目的。我有另一个程序,可以在本地正确执行SQL命令。 – CSharpProgrammer 2010-08-06 20:51:11

+0

@CSharpProgrammer:该其他程序是否可以成功执行您尝试使用的存储过程? – 2010-08-06 20:51:59

+0

不,因为我把它作为一个CLR Sproc,并且据我所知,除非它正确地通过构建,否则我不能创建它 – CSharpProgrammer 2010-08-06 20:53:44