我在單個SqlServer實例中有2個數據庫。 我需要使用ServiceBroker服務將消息從一個數據庫發送到另一個數據庫。 如何在不將數據庫上的TRUSTWORTHY設置爲「ON」的情況下完成該操作,因爲在我的情況下,由於安全風險,這不是選項?數據庫之間的ServiceBroker通信沒有TRUSTWORTHY ON
回答
必須設置對話框中的安全性,使用證書,見Certificates for Dialog Security:
- 創建數據庫主密鑰在兩個數據塊所涉及
創建和導出證書的發起方服務所有者(可能DBO)
USE <initiatordb>;
CREATE CERTIFICATE [<initiatorservicename>] AUTHORIZATION [<initiatorserviceowner>] WITH SUBJECT = '<initiatorservicename>';
BACKUP CERTIFICATE [<initiatorservicename>] TO FILE = 'c:\temp\<initiatorservicename>.cer'
;做同樣的,對於目標服務:
USE <targetdb>;
CREATE CERTIFICATE [<targetservicename>] AUTHORIZATION [<targetserviceowner>] WITH SUBJECT = '<targetservicename>';
BACKUP CERTIFICATE [<targetservicename>] TO FILE = 'c:\temp\<targetservicename>.cer'
;進口發起者服務業主的目標DB證書,爲它創建一個代理用戶,並授予發送權限:
USE <targetdb>;
CREATE USER [<initiatorserviceproxyuser>] WITHOUT LOGIN;
CREATE CERTIFICATE [<initiatorservicename>] AUTHORIZATION [<initiatorserviceproxyuser>] FROM FILE='c:\temp\<initiatorservicename>.cer'
GRANT SEND ON SERVICE::[<targetservicename>] TO [<initiatorserviceproxyuser>];
導入目標服務創建啓動程序DB中的所有者證書,爲其創建代理用戶並映射遠程服務綁定:
USE <initiatordb>;
CREATE USER [<targetserviceproxyuser>] WITHOUT LOGIN;
CREATE CERTIFICATE [<targetservicename>] AUTHORIZATION [<targetserviceproxyuser>] FROM FILE='c:\temp\<targetservicename>.cer'
CREATE REMOTE SERVICE BINDING [<targetservicename>] WITH SERVICE_NAME = '<targetservicename>', USER = [<targetserviceproxyuser>];
我輸入這一切都從記憶,我希望我的語法正確。
- 1. 數據庫之間的通信Ruby on Rails
- 2. 在處理數據庫時JSP,Servlet,DAO之間的通信
- 3. 通信的兩個SQLite數據庫之間?
- 4. 2個Servlets之間的通信不適用於數據庫
- 5. 在數據庫之間移動信息
- 6. 在Django推送通知和服務工作者之間沒有`數據`通信
- 7. JRuby on Rails沒有數據庫
- 8. iOS沒有通過PHP的iPhone應用程序和MySQL數據庫之間的通信
- 9. 通過JSON在數據庫之間傳遞信息
- 10. 如何在nodejs和數據庫之間進行通信
- 11. 數據庫通信
- 12. 定製的聚合物成分之間沒有通信
- 13. 刷新表使用jquery沒有通信數據庫
- 14. 將數據存儲在沒有數據庫的Ruby on Rails中
- 15. 有沒有一種方法可以在沒有while循環的計算機之間進行數據通信? C++
- 16. 數據庫到數據庫通信
- 17. 使用JSON數組的Windows Phone 7,MYSQL數據庫和PHP之間的通信?
- 18. Java對象之間的有效通信
- 19. 之間的代碼行之間的數據沒有執行
- 20. 類之間的通信
- 21. 類之間的數據沒有通過iphone
- 22. 工作區之間的數據交換沒有通知
- 23. 兩個Android之間沒有公共IP的WiFi語音通信?
- 24. 兩個域或子域之間的通信沒有url重寫
- 25. Vue 2 - 組件之間的通信(發送和接收數據)
- 26. iFrames之間的通信?
- 27. 頁面之間的通信
- 28. Ruby之間的類通信
- 29. 線程之間的通信?
- 30. UIViewControllers之間的通信
謝謝你的回答。它需要一個主密鑰,所以我添加了這個語句:CREATE MASTER KEY ENCRYPTION BY PASSWORD ='PASSWORD'GO ALTER MASTER KEY通過SERVICE MASTER KEY添加加密。但是現在我收到以下錯誤:'綁定到數據庫主體(ID 1)的安全證書的私鑰是受密碼保護的。 密碼保護私鑰不支持與安全對話框一起使用。' –
這意味着您使用密碼保護創建了證書,而不是像我的示例中那樣使用主密鑰保護。從證書創建中刪除「密碼加密...」子句。 –
它的作品!非常感謝你。 –