在SQL Server 2008 R2上觸發 trigger 時呼叫C#(CLR)程式 - part2
接續上一篇在SQL Server 2008 R2上觸發 trigger 時呼叫C#(CLR)程式
要使用EXTERNAL_ACCESS的權限,CLR必須是有簽章的,可以在專案的屬性頁裡的Signing頁籤內設定
設定好簽章後,要在SQL端產生簽章金鑰
在SQL輸入下列指令
1: USE master
2: CREATE ASYMMETRIC KEY SQLCLRTestKey FROM EXECUTABLE FILE = 'C:\temp\SqlServerProject2.dll'
3: CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY SQLCLRTestKey
4: GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRTestLogin;
5: GO
一定要在master之下產生金鑰,第二行程式碼就是產生金鑰的指令
他會依據dll內的簽章來產生,所以如果SQL是在遠端,那麼dll要先丟過去。
第三行根據此金鑰新增一個登入帳號,以後此dll的權限就會和此登入帳號相同
第四行設定權限
除了產生金鑰要下指令之外,另外兩個指令可以直接在SQL端的介面上設定
新增一個登入者
選擇對應非對稱金鑰
接著設定安全權限
當此三個指令成功之後
我們也可以在SQL管理介面看到
金鑰
帳號
這樣一來,就可以直接在VS上面佈署dll到SQL Trigger了
在專案的屬性頁的Database頁籤裡就可以設定要用EXTERNAL_ACCESS的權限佈署了!
同理,如果要將佈署權限提升到UNSAFE,只要改變登入帳號的安全權限,增加允許Unsafe assembly就可以了!