SQL Server Management Studioで次の非常に簡単なクエリを実行しようとしています。
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
left join
master.sys.parameters as params on procs.object_id = params.object_id
これは完全に正しいように見えますが、次のエラーが発生し続けます。
メッセージ102、レベル15、状態1、行6
「」付近の構文が正しくありません。
結合を取り出して、単純な選択のみを行うと機能します:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
しかし、私は働くために参加が必要です。私もhaveこのクエリの文字列 ''ではないので、何が気に入らないのかわかりません。
このような予期しない問題は、Webページまたは電子メールからコードをコピーし、テキストに個々のCRやLFなどの印刷できない文字と改行しないスペースが含まれている場合に発生する可能性があります。
Panagiotis Kanavosは正しいです。T-SQLをコピーして貼り付けると、不要な文字が表示されることがあります...
最終的に、文全体を手動で書き換える必要なく、どの文字が間違っているかを検出するためのシンプルで高速な方法(Notepad ++のみが必要)を見つけました。ファイルをディスクに保存する必要はありません。
Notepad ++では、非常に簡単です。
間違った文字を簡単に見つけるはずです
私にとってのエラーは、SQLファイルをテキストファイルから読み取り、テキストファイルがBOM(バイトオーダーマーク)形式のUTF-8で保存されたことです。
これを解決するために、Notepad ++でファイルを開き、エンコードの下でUTF-8を選択しました。または、16進エディタでファイルの最初の3バイトを削除できます。
私はADO.NETを使用し、SQLコマンドを次のように使用していました。
string query =
"SELECT * " +
"FROM table_name" +
"Where id=@id";
事は私が"FROM table_name"+
の終わりに空白を逃したことだったので、基本的にそれは言った
string query = "SELECT * FROM table_nameWHERE id=@id";
これがエラーの原因でした。
それが役に立てば幸い
alias columnsをDECLAREステートメントに貼り付けたため、このエラーが発生しました。
DECLARE @userdata TABLE(
f.TABLE_CATALOG nvarchar(100),
f.TABLE_NAME nvarchar(100),
f.COLUMN_NAME nvarchar(100),
p.COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata
エラー:メッセージ102、レベル15、状態1、行2 '。'付近の構文が正しくありません。
DECLARE @userdata TABLE(
f_TABLE_CATALOG nvarchar(100),
f_TABLE_NAME nvarchar(100),
f_COLUMN_NAME nvarchar(100),
p_COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata
エラーなし