dat*_*god 3 authentication sql-server openrowset
我需要在数百个不属于域的服务器上运行一些临时查询。每个服务器都有一个低权限 SQL 用户帐户,该帐户对一些感兴趣的表具有只读访问权限。
我的想法是将这些服务器的名称存储在一个表中,并使用该表来驱动 OPENDATASOURCE 或 OPENROWSET 命令。
服务器要么在不同的域中,要么在不受信任的域中,要么在工作组中,等等。一团糟。
我一生都找不到如何配置这些命令以使用 SQL Server 帐户/密码组合的示例。
注意:这发生在沙箱中,并不适用于现实世界。这只是一个概念证明,因此安全性不是主要问题。这些服务器是通过一个模拟真实网络增长的过程产生的。
作为记录,我能够让 OPENROWSET 工作:
SELECT *
FROM OPENROWSET('SQLNCLI',
'DRIVER={SQL Server};SERVER=MyServer;UID=MyUserID;PWD=MyCleverPassword',
'select @@ServerName')
Run Code Online (Sandbox Code Playgroud)
要使用 SQL 登录运行它,只需在连接字符串中指定用户 ID 和密码(在 BOL 中称为“初始化字符串”)
SELECT
* FROM
OPENDATASOURCE (
'SQLNCLI', -- or SQLNCLI
'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable
Run Code Online (Sandbox Code Playgroud)