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

时间:2017-05-17 16:41:41

标签: sql-server ssms sql-server-2014 utf-16 windows-1252

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

的信息:

  

SQL Server 2014

     

SSMS版本 - 12.0.4100.1

1 个答案:

答案 0 :(得分:9)

ÿþ是解释UTF-16 byte order mark的两个字节的一种方法,即\ xFF和\ xFE。

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

例如,当您使用Windows记事本编辑文本文件并选择" Unicode"当你保存文件编码时,记事本将使用UTF-16保存文件,并在开始时用上述两个字节标记它。

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

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

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