"无法找到存储过程'ÿþ'"错误

Cur*_*ity 3 sql-server ssms utf-16 windows-1252 sql-server-2014

我正在尝试执行查询,在读取SQL脚本文件中的内容后,将其分配给变量然后执行内容.然后我得到这个错误说Could not find stored procedure 'ÿþ'.请帮我理解这个问题.谢谢.

信息:

SQL Server 2014

SSMS版本 - 12.0.4100.1

Tom*_*lak 9

ÿþ是解释UTF-16字节顺序标记的两个字节的一种方法,即\ xFF和\ xFE.

当您使用不知道的工具读取以UTF-16编码保存的文件时,您会得到这两个字母,或者更可能是未配置为使用Unicode的工具.

例如,当您使用Windows记事本编辑文本文件并在保存时选择"Unicode"作为文件编码时,记事本将使用UTF-16保存文件,并在开头标记所述两个字节.

如果用于读取文件的任何内容都不知道文件是Unicode的事实,那么它将使用计算机的默认字节编码来解码该文本文件.

现在,如果默认编码恰好是Windows-1252,就像你的情况一样,那ÿþ就是你得到的,因为\ xFF是ÿ和\ xFE þ.

因此,当提交时ÿþ,SQL Server认为它必须是存储过程的名称,因为存储过程是您可以通过仅提及其名称来运行的唯一语句.它尽职尽责地报告它无法找到该名称的程序.