2017-02-20 63 views
0

我試圖部署一個CLR觸發器,該觸發器鏈接到包含我編寫的庫的外部.dll文件。現在我只想測試本地數據庫上的代碼。我已經將本地數據庫設置爲Trustworthy = True,並且可以通過外部程序集訪問我的用戶名。我也加入到我試圖使用外部庫的引用,但是當我調用該函數我得到這個錯誤CLR觸發器部署錯誤

Severity Code Description Project File Line Suppression State 
Error  SQL72014: .Net SqlClient Data Provider: Msg 6503, Level 16, 
State 12, Line 1 Assembly 'googlecalendersync, version=1.0.0.0, 
culture=neutral, publickeytoken=fab9d21c96557bef.' was not found in the SQL 
catalog. Test3 C:\Users\dwd002\Documents\Visual Studio 
2015\Projects\Test3\Test3\bin\Debug\Test3.sql 52 

任何幫助將大大apreciated。我現在知道,我這樣做並不安全,現在它只是一個概念證明。在構建庫.dll時,我有什麼錯誤嗎?

+0

你可以使用'create assembly'語句將該程序集添加到數據庫嗎? –

+0

事實證明,這將是唯一的解決方案,但由於該項目由12個左右的外部DLL添加它們將是一個痛苦,網絡管理員不希望將數據庫更改爲不安全的代碼。因此,解決方法是創建我想要在c#項目中執行的所有代碼,並將其編譯爲.exe,然後從觸發器運行該.exe。 C#項目將從外部連接到數據庫。 –

回答

2

我認爲你是在你的CLR項目中使用第三方DLL

首先,你需要創建大會從您的第三方DLL

use master 
GO 
CREATE ASYMMETRIC KEY ClrGoogleCalender 
FROM EXECUTABLE FILE='<Your 3rd party dll path>' 
CREATE LOGIN CLRGoogleCalenderLOGIN FROM ASYMMETRIC KEY ClrGoogleCalender 
GRANT UNSAFE ASSEMBLY TO ClrGoogleCalenderLOGIN 
GO 

然後Uplaod您的第三方的DLL的SQL Server目錄

[1]: https://i.stack.imgur.com/sBhQZ.png