我想如果我必須真正將它歸結爲一件事情,真正的問題是:「有沒有辦法使用某種4部分標識符語法 - 相當於調用keyand證書,並保持開放,使一個4部分組成的標識符SELECT
語句可以使用鏈接的服務器?「鏈接服務器使用對稱密鑰/證書的加密數據查詢
所有服務器都SQL Server 2012中利用它。
當我登錄到SSMS服務器(SERVER_A
)(該服務器具有加密的數據),我可以簡單地OPEN SYMMETRIC KEY
和DECRYPTION WITH
證書,然後用DECRYPTWITHKEY
包裹欄和我的路。在SSMS
SERVER_A查詢:
OPEN SYMMETRIC KEY [KEY]
DECRYPTION WITH [CERTIFICATE]
GO
SELECT
CONVERT(NVARCHAR, DECRYPTWITHKEY(col)) AS ColA
FROM
SCHEMA.TABLE
GO
我有另一臺服務器(SERVER_B
)與鏈接服務器連接到SERVER_A
。從SERVER_B
,我希望能夠在語法上做類似的事情,但我沒有任何運氣。
我成功地使用EXEC [SERVER_A].DATABASE.dbo.sp_executesql N'<above code>'
與RPC
導通,但這種方法需要轉義單引號和我失去IntelliSense和代碼的整體可維護性/可讀性(這是更復雜的明顯高於上面的例子)。
有沒有辦法做一個類似於以下內容:
理想 SERVER_B查詢「形式」在SSMS:
OPEN SYMMETRIC KEY [SERVER_A].DATABASE.[KEY]
DECRYPTION WITH [SERVER_A].DATABASE.[CERTIFICATE]
GO
SELECT
CONVERT(NVARCHAR, DECRYPTWITHKEY(col)) AS ColA
FROM
[SERVER_A].DATABASE.SCHEMA.TABLE
GO
或者至少,將鑰匙打開,以便我可以使用4部分標識符語法SELECT
語句(即,沒有將整個事物包裝在我已經完成並且可行的OPENQUERY
中,但我不想引用整個查詢)?對於更好或更差的練習/性能,實際的SELECT
語句調用來自Intranet上3個不同服務器的數據,因此4部分標識符語法非常方便,可讀性強。
「(即沒有在OPENQUERY包裹了整個事情,我已經做了和工作,但我不想引用整個查詢)「 – Matt