アドホック分散クエリを有効にする方法


105

OPENROWSETSQL Server 2000でクエリを実行すると、機能します。

ただし、SQL Server 2008で同じクエリを実行すると、次のエラーが発生します。

SQL Serverは、このサーバーのセキュリティ構成の一部としてこのコンポーネントが無効になっているため、コンポーネント 'アドホック分散クエリ'のステートメント 'OpenRowset / OpenDatasource'へのアクセスをブロックしました。システム管理者は、sp_configureを使用して「アドホック分散クエリ」の使用を有効にすることができます


ところで、警告に耳を傾け、SQLコードを変更して、OPENROWSETではなくリンクサーバーを使用することをお勧めします。
RBarryYoung 2013年

2
@RBarryYoungこれは実際には「警告」ではありません-有効になっていないという通知にすぎません。これを有効にすることの危険性は何ですか?
コンラッド

1
悪意のあるユーザーがSQLをどこかに挿入できた場合、このオプションをオンにすると、ユーザーが選択したデータファイルをプローブできる可能性があります。リンクサーバーとして設定すると、特定のファイル(リンクサーバー)のみが公開されます(使用しているSQL Serverのセキュリティが統合されているなど)。
Mike M

しかし、私は内部テストとデータ移行のためにこのオプションが好きです...したがって、再びそれを使用する方法を探しています:)
Mike M

回答:


217

次のコマンドが役立つ場合があります。

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

14

次のコマンドを確認できます

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO  --Added        
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;',
     'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2012.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

またはこのドキュメントのリンク


5
最初の「RECONFIGURE」の後に「GO」を追加する必要があります。それ以外の場合は、完璧なソリューションです

1
SELECTの前にサーバーをリンクする必要はありませんか?
Sebastien H.

3

システムカタログへのアドホックアップデートが「サポートされていない」場合、または「メッセージ5808」が表示される場合は、次のように上書きして構成する必要があります。

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO

2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

行ごとにGOは必要ありません
Rob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.