Pregunta

esta declaración que uso en un sproc (donde la frase de búsqueda 'reiseportal *' es un parámetro) no funciona con un comodín, como reconocí:

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

estos son los contenidos de la variable @strSQL:

después de la primera selección:

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

2da selección:

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 es el Index Server vinculado (= Microsoft Server 2003 - nuestro servidor de archivos).

No lo entiendo ... devuelve resultados con "reiseportales" pero no "reiseportal *" o '' reiseportal% ''. ¿Tienes alguna pista para mí?

Su ayuda es muy apreciada, muchas gracias

¿Fue útil?

Solución

Encontré la respuesta yo mismo.

El problema no es el comodín, sino los marcadores de cadena. El servidor de índice no usa apóstrofos sino comillas. Entonces, el SQL correcto debería ser como:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top