2009-08-04 4 views
0

diese Aussage, die ich in einem sproc verwenden (wo der Suchbegriff ‚Reiseportal *‘ ist ein Parameter) nicht mit einem Platzhalter nicht funktioniert, wie ich erkannt:SQL-Abfrage verknüpft Indexserver funktioniert nicht mit Wildcards

DECLARE @strSQL NVARCHAR(MAX) 

SELECT @strSQL= 'SELECT FileName, path, size, vpath from "GRIP-SERVER"."Web2"..SCOPE() where contains 
('SELECT @[email protected] + 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%". Hast du Hinweise für mich?

Ihre Hilfe wird sehr geschätzt, vielen Dank!

Antwort

1

Ich habe die Antwort selbst gefunden.

Das Problem ist nicht der Platzhalter, sondern die String-Marker. Der Indexserver verwendet keine Hochkommas, sondern Anführungszeichen. So sollte das korrekte SQL lauten:

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