Frage

Diese Aussage, die ich in einem sproc verwenden (wo der Suchbegriff ‚* Reiseportal‘ ist ein Parameter) funktioniert nicht mit einem Platzhalter, wie ich erkannt:

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

das sind die Inhalte der @strSQL Variable:

nach dem 1. wählen:

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

2. wählen:

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 ist der verknüpfte Index Server (= Microsoft Server 2003 - unser Dateiserver).

Ich bekomme es nicht ... es gibt Ergebnisse mit „reiseportals“, aber nicht „Reiseportal *“ oder „Reiseportal%“. Haben Sie für mich irgendwelche Hinweise haben?

Ihre Hilfe wird sehr geschätzt, vielen Dank!

War es hilfreich?

Lösung

fand ich die Antwort selbst.

Das Problem ist nicht der Platzhalter, aber der Zeichenfolge-Marker. Der Index-Server verwendet nicht Apostrophe aber Anführungszeichen. Also die richtige SQL sollte wie:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top