7

SQLCMD コマンド:rは非定数リテラル パスをサポートしていますか?

例えば:

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: .
4

3 に答える 3

6

SQLCMD コマンド :r は非定数リテラル パスをサポートしていますか?

します。変数を間違った方法で定義しています。試す:

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

MSDN のこの記事も参照してください。

于 2011-07-09T15:21:07.487 に答える
2

他の人が失った時間を節約するための例として、これをここに投稿してください。

test_setvar.sql ファイルには、次の内容が含まれています。

-- :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

ここに明確に記載されています。

注: マルチパート文字列と :out を含むフィールドには二重引用符が必要です。たとえば、

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

このため、一重引用符のラップは :out では機能しません。

しかし...クエリ内で二重引用符または単一引用符のラップが必要です。

where col.name LIKE "%" + "$(SEARCH_STRING)" + "%"
于 2011-09-30T07:48:02.077 に答える
1

問題は、エラー リストのファイル VS リストではなく、参照するファイルにあります。

参照するファイルの構文エラーを検索する必要があります。あなたの例では .\script.sql

于 2012-01-17T11:36:04.807 に答える