2017-05-17 111 views
3

我試圖從SQL腳本文件中讀取內容後,將它分配給一個變量,然後執行內容來執行查詢。然後我得到這個錯誤Could not find stored procedure 'ÿþ'。請幫我理解這個問題。謝謝。「找不到存儲過程''''」錯誤

信息:

的SQL Server 2014

SSMS版本 - 12.0.4100.1

+2

問題是您的SQL腳本文件被編碼爲UTF-16,並且讀取它的應用程序的一部分將其解碼爲Windows-1252。 – Tomalak

+0

哦,我明白了。我能做些什麼來克服它? – Curiousity

回答

8

ÿþ是解釋了UTF-16 byte order mark,這是兩個字節的一種方式\ xFF和\ xFE。

當您讀取已使用不知道或者更可能未配置爲使用Unicode的工具以UTF-16編碼保存的文件時,您會得到這兩個字母。

例如,當您使用Windows記事本編輯文本文件並在保存時選擇「Unicode」作爲文件編碼時,記事本將使用UTF-16保存該文件並將其標記爲開始。

如果您用來讀取文件的任何東西都不知道該文件是Unicode的事實,那麼它將使用您的計算機的默認字節編碼來解碼該文本文件。

現在,如果默認編碼恰好是Windows-1252,像你的情況,那麼ÿþ就是你得到的,因爲有\ XFF是ÿ和\ xFE如果是þ

因此,當與ÿþ一起提交時,SQL Server認爲它必須是存儲過程的名稱,因爲存儲過程是隻能通過提及其名稱來運行的唯一語句。它忠實地報告說它找不到這個名字的程序。

+0

謝謝你的解釋。現在我明白爲什麼會這樣。有什麼方法可以跳過這些角色嗎? – Curiousity

+1

你絕對不想跳過那些角色。它們很重要。 – Tomalak

+1

我已經解釋了一切你需要知道的關於做什麼的正確結論。拼圖一起,這並不難。 :) – Tomalak