web-dev-qa-db-ja.com

リンクサーバーに対するOPENQUERYの8000文字の制限

SSRS/SQL Server 2014でOPENQUERYを実行しようとしているクエリがありますが、次のエラーが発生し続けます。

[...]で始まる文字列が長すぎます。最大長は8000です。

この制限を回避する方法はありますか?

参考までに、リンクされたMySQLサーバーを介してSSRSからクエリを実行しようとしています。

10
Salmononius2

次のように、 EXECUTE AT を使用して、OPENQUERYの8000文字の制限をバイパスできます。

DECLARE @myStatement VARCHAR(MAX)
SET @myStatement = 'SELECT * FROM TABLE WHERE CHARACTERS.... ' -- Imagine that's longer than 8000 characters

EXECUTE (@myStatement) AT LinkedServerName

これがエラーをスローしないことを確認するには、リンクサーバーで RPC OUT オプションを有効にする必要があります。次のコマンド:

EXEC master.dbo.sp_serveroption @server=N'LinkedServerName', @optname=N'rpc out', @optvalue=N'true'

またはGUI内で有効にする:

enter image description here

12
John Eisbrener