4

私は自分のソフトウェアの更新スクリプトを次の形式で実行しようとしています。

osql.exe -i "path \ to \ script" -U "user" -P "Password" -S"SQLserverの場所"-d"データベース名"-n-b

ほとんどのスクリプトは同じ形式であり、すべてGOで終わります。それらの多くは問題なく実行されますが、ランダムスクリプトは常にエラーを返し、実行されません。エラーは「1行目の「∩」の近くの構文が正しくありません。スクリプトはINSERTのように単純な場合がありますが、常にこのエラーです。オンラインで役立つものが見つからないようです。誰かが何か洞察を提供できますか?

スクリプトは手動で問題なく実行されます。また、新しいテキストドキュメントを作成し、スクリプトを新しいファイルに貼り付けて.sqlに変更し、そのファイルを実行すると、問題なく動作することも興味深い点です。すべての「壊れた」スクリプトに対してこれを実行しますが、新しいスクリプトでも引き続き発生し、最終的には変更されたスクリプトでも発生します。

4

2 に答える 2

5

ファイルがUTF-8ではなくUnicodeとしてエンコードされていることが原因である可能性があります。これは、他の無料のユーティリティの中でもNotepad++で確認できます。それをUTF-8に変換してみて、それが役立つかどうかを確認してください。

アップデート

訂正:コメントにリンクされている記事で説明されているように、osqlはUTF-16(Unicode 1200)または'ANSI'(Windows-1252)としてエンコードされたテキストファイルを解析できますが、UTF-8でエンコードされたファイルは解析できません。

于 2012-08-29T19:45:31.600 に答える
1

Unicodeの問題のように聞こえます(特に、新しいドキュメントへのコピー/貼り付けが機能するため)。typeこれをテストするには、一時ファイルを使用してリダイレクトし、次のように強制的にANSIに転送します。

type \path\to\script.sql > %TEMP%\newscriptname.sql & osql.exe -i "%TEMP%\newscriptname.sql" -U "user" -P "Password" -S "Location of sqlserver" -d "Database name" -n -b
于 2012-08-29T20:07:34.743 に答える