2010-08-06 51 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