2011-04-13 15 views
6

¿El comando SQLCMD :r admite rutas literales no constantes?SQLCMD: r <path> donde ruta es una variable

Por ejemplo:

setvar $(path1) '.\script.sql' 
:r $(path1) -- SQL01260: A fatal parser error occurred: . 
:r '$(path1)' -- SQL01260: A fatal parser error occurred: . 
:r "$(path1)" -- SQL01260: A fatal parser error occurred: . 

Respuesta

5

que hace el comando SQLCMD: r apoyo no constantes literales caminos?

Lo hace. Está definiendo su variable de una manera incorrecta. Pruebe:

:setvar path1 "script.sql" 
:r $(path1) 

Véase también this article on MSDN.

1

Solo publico esto aquí como un ejemplo para que otros ahorren el tiempo que acabo de perder.

archivo test_setvar.sql contiene la siguiente

-- :r test_setvar.sql 
:reset 

:setvar Name "filename" 
print '$(Name)' 
-- :setvar OutName '$(Name)' -- NO wont work 
-- :out $(OutName).txt 
:r $(Name).sql -- filename.sql exists and prints "Hello World" 
:out $(Name).txt -- filename.txt is created 

go 
:out stdout 

Dicho claramente here.

Nota: Las comillas dobles necesarios para las cadenas de múltiples partes y campos con: Fuera Por ejemplo

:out "string bit"$(field1)"string bit2"$(field2) 

Las comillas simples envolver no trabajará con: para esto.

Pero ... Enviando comillas dobles o simples es necesario dentro de una consulta.

where col.name LIKE "%" + "$(SEARCH_STRING)" + "%" 
1

El problema no está en las listas de archivos VS en la lista de errores, sino en el archivo al que hace referencia.

El error de sintaxis debe buscarse para el archivo al que hace referencia. Para su ejemplo. \ Script.sql

Cuestiones relacionadas