統合セキュリティ(Windows認証)を使用したOPENROWSETに関する記事をたくさん見ましたが、うまく機能しませんでした。
SQL Server認証を使用して正常に動作しています。
select *
FROM
OPENROWSET('SQLOLEDB',
'myserver';'monitor';'#J4g4nn4th4#',
'SELECT GETDATE() AS [RADHE]')
しかし、Windows認証を使用して実行しようとしているのと同じクエリが機能しません。
select *
FROM
OPENROWSET('SQLOLEDB',
'myserver';'Integrated Security=SSPI',
'SELECT GETDATE() AS [RADHE]')
誰かがうまくいく例を投稿できますか?
これは良い記事です 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')
変数を宣言して現在のインスタンス名を取得し、OpenROWSet
に値を渡します。
アドホック分散クエリを有効にする
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
Windows認証を使用してデータをフェッチするOPENROWSET
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