リンクインデックスサーバーへのSQLクエリがワイルドカードで機能しない

StackOverflow https://stackoverflow.com/questions/1227072

  •  22-07-2019
  •  | 
  •  

質問

sprocで使用する次のステートメント(検索フレーズ 'reiseportal *'がパラメーターである場合)は、認識したとおり、ワイルドカードでは機能しません。

DECLARE @strSQL NVARCHAR(MAX)

SELECT @strSQL= 'SELECT FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where contains
('SELECT @strSQL=@strSQL  + CHAR(39) + CHAR(39)+ 'reiseportal*' + CHAR(39) + CHAR(39)+')'

SELECT @strSQL='SELECT DISTINCT DOC.ID_Kandidat, IDXS.* FROM
OPENQUERY([GRIP-SERVER],'+ CHAR(39) + @strSQL + CHAR(39) +') AS IDXS INNER JOIN
tblK_Dokumente AS DOC
ON DOC.Link = IDXS.[FileName]
ORDER BY ID_Kandidat'

EXEC sp_executesql @statement = @strSQL

これらは@strSQL変数の内容です:

最初の選択後:

select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''reiseportal*'')

2番目の選択:

SELECT DISTINCT DOC.ID_Kandidat, IDXS.* FROM
OPENQUERY([GRIP-SERVER],'select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''reiseportal*'')') AS IDXS INNER JOIN
tblK_Dokumente AS DOC
ON DOC.Link = IDXS.[FileName]
ORDER BY ID_Kandidat'

GRIP-SERVERは、リンクされたインデックスサーバー(= Microsoft Server 2003-ファイルサーバー)です。

わかりません..." reiseportals"で結果を返します「reiseportal *」ではなくまたは「reiseportal%」。ヒントがありますか?

ご協力に感謝します、どうもありがとう!

役に立ちましたか?

解決

自分で答えを見つけました。

問題はワイルドカードではなく、文字列マーカーです。インデックスサーバーは、アポストロフィではなく引用符を使用します。したがって、正しいSQLは次のようになります。

SELECT DISTINCT DOC.ID_Kandidat, IDXS.* FROM
OPENQUERY([GRIP-SERVER],'select FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where
contains(''"reiseportal*"'')') AS IDXS INNER JOIN
tblK_Dokumente AS DOC
ON DOC.Link = IDXS.[FileName]
ORDER BY ID_Kandidat
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top