2012-09-20 55 views

回答

4

必須設置對話框中的安全性,使用證書,見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>];

我輸入這一切都從記憶,我希望我的語法正確。

+0

謝謝你的回答。它需要一個主密鑰,所以我添加了這個語句:CREATE MASTER KEY ENCRYPTION BY PASSWORD ='PASSWORD'GO ALTER MASTER KEY通過SERVICE MASTER KEY添加加密。但是現在我收到以下錯誤:'綁定到數據庫主體(ID 1)的安全證書的私鑰是受密碼保護的。 密碼保護私鑰不支持與安全對話框一起使用。' –

+0

這意味着您使用密碼保護創建了證書,而不是像我的示例中那樣使用主密鑰保護。從證書創建中刪除「密碼加密...」子句。 –

+0

它的作品!非常感謝你。 –