我試圖從SQL腳本文件中讀取內容後,將它分配給一個變量,然後執行內容來執行查詢。然後我得到這個錯誤Could not find stored procedure 'ÿþ'
。請幫我理解這個問題。謝謝。「找不到存儲過程''''」錯誤
信息:
的SQL Server 2014
SSMS版本 - 12.0.4100.1
我試圖從SQL腳本文件中讀取內容後,將它分配給一個變量,然後執行內容來執行查詢。然後我得到這個錯誤Could not find stored procedure 'ÿþ'
。請幫我理解這個問題。謝謝。「找不到存儲過程''''」錯誤
信息:
的SQL Server 2014
SSMS版本 - 12.0.4100.1
ÿþ
是解釋了UTF-16 byte order mark,這是兩個字節的一種方式\ xFF和\ xFE。
當您讀取已使用不知道或者更可能未配置爲使用Unicode的工具以UTF-16編碼保存的文件時,您會得到這兩個字母。
例如,當您使用Windows記事本編輯文本文件並在保存時選擇「Unicode」作爲文件編碼時,記事本將使用UTF-16保存該文件並將其標記爲開始。
如果您用來讀取文件的任何東西都不知道該文件是Unicode的事實,那麼它將使用您的計算機的默認字節編碼來解碼該文本文件。
現在,如果默認編碼恰好是Windows-1252,像你的情況,那麼ÿþ
就是你得到的,因爲有\ XFF是ÿ
和\ xFE如果是þ
。
因此,當與ÿþ
一起提交時,SQL Server認爲它必須是存儲過程的名稱,因爲存儲過程是隻能通過提及其名稱來運行的唯一語句。它忠實地報告說它找不到這個名字的程序。
謝謝你的解釋。現在我明白爲什麼會這樣。有什麼方法可以跳過這些角色嗎? – Curiousity
你絕對不想跳過那些角色。它們很重要。 – Tomalak
我已經解釋了一切你需要知道的關於做什麼的正確結論。拼圖一起,這並不難。 :) – Tomalak
問題是您的SQL腳本文件被編碼爲UTF-16,並且讀取它的應用程序的一部分將其解碼爲Windows-1252。 – Tomalak
哦,我明白了。我能做些什麼來克服它? – Curiousity