2

MS SQL Server では変数を OPENQUERY ステートメントで使用できないことと、回避策を知っています。

私が知りたいのは、変数や連結された文字列が許可されない理由を知っている人はいますか?

これにより人々がジャンプする原因となるフープは、単に驚くべきものであり、EXEC などの他の機能と一致していません。

誰でもこれについてコメントできますか?MS の誰に賄賂を渡して、彼を整理してもらう必要がありますか?

4

2 に答える 2

3

この制限は、リンクサーバーがSQL Serverに実装される方法、およびその依存ライブラリが機能する方法によって引き起こされます。SQLコマンドを渡すために使用されるライブラリのチェーン全体があり、それらはすべて異なる変数サイズとキャッシュサイズを持っています。いくつかの制限はOCBCドライバー自体にあるので、8kはMicrosoftからの安全な賭けです。変数の受け渡しを許可しないと、8kの制限ルールが適用されます。

于 2009-11-11T10:10:40.843 に答える
1
declare @v1 varchar(max)

EXEC('SELECT * FROM OPENQUERY (<linkedserver>, ''SELECT * FROM <table> WHERE <column> = ''''' + @v1 + ''''''')')
于 2010-01-08T19:49:41.973 に答える