Mar*_*lli 3 security sql-server linked-server sql-server-2012 openrowset
我看过很多关于使用集成安全性(Windows 身份验证)的 OPENROWSET 的文章,但我无法让它为我工作。
使用 SQL Server 身份验证工作正常:
select *
FROM
OPENROWSET('SQLOLEDB',
'myserver';'monitor';'#J4g4nn4th4#',
'SELECT GETDATE() AS [RADHE]')
Run Code Online (Sandbox Code Playgroud)
但我尝试使用 Windows 身份验证运行相同的查询,但它不起作用:
select *
FROM
OPENROWSET('SQLOLEDB',
'myserver';'Integrated Security=SSPI',
'SELECT GETDATE() AS [RADHE]')
Run Code Online (Sandbox Code Playgroud)
有人可以发布一个有效的示例吗?
这是一篇描述 OPENROWSET 用法的好文章。
使用 OPENROWSET 的工作脚本示例 - 请阅读评论
----------------------------------------------------------------
-- this works - linked server REPLON1
----------------------------------------------------------------
select *
FROM
OPENROWSET('SQLOLEDB',
'Server=REPLON1;Trusted_Connection=yes;',
'SELECT GETDATE() AS [RADHE]')
select *
FROM
OPENROWSET('SQLOLEDB',
'Server=REPLON1;Trusted_Connection=yes;',
'SET FMTONLY OFF select * from sys.dm_exec_requests')
SELECT a.*
FROM OPENROWSET('SQLOLEDB', 'server=replon1;Trusted_Connection=yes;', 'SET
FMTONLY OFF select * from sys.dm_exec_requests') AS a
WHERE a.session_id > 50
ORDER BY a.start_time desc
----------------------------------------------------------------
-- this does not work - when using windows authentication
-- apparently because windows server 2003 and windows server 2012 have problems connecting - related to SID
-- it works fine using SQL Server Authentication
----------------------------------------------------------------
select *
FROM
OPENROWSET('SQLOLEDB',
'Server=SQLREPLON1\REP;Trusted_Connection=yes;',
'SELECT GETDATE() AS [RADHE]')
-- Msg 18456, Level 14, State 1, Line 1
--Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
----------------------------------------------------------------
-- this works - linked server SQLREPLON1\REP
----------------------------------------------------------------
select *
FROM
OPENROWSET('SQLOLEDB',
'SQLREPLON1\REP';'monitor';'#J4g4nn4th4#',
'SELECT * from SAReporting.DBO.tblStockLedgerMovement')
Run Code Online (Sandbox Code Playgroud)
声明变量以获取当前实例名称并将值传递给OpenROWSet.
启用临时分布式查询
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
Run Code Online (Sandbox Code Playgroud)
OPENROWSET 使用 Windows 身份验证来获取数据
DECLARE @InstanceName VARCHAR(200),
@sql NVARCHAR(MAX)
SELECT @InstanceName = ( SELECT @@servername )
SELECT @sql = 'select a.* from openrowset(''SQLNCLI'', ''Server='
+ @InstanceName
+ ';Trusted_Connection=yes;'', ''select * from Databasename.dbo.TableName'') as a'
EXEC sp_executeSQL @sql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21484 次 |
| 最近记录: |