我想如果我必须真正将它归结为一件事情,真正的问题是:“有没有办法使用某种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