在SQL Server 2005中的字符编码

在哪里可以configuration(如果可能)Sql Server 2005如何“解释”通过TDS协议发送的string数据的字符编码(在这种情况下,从Web应用程序)?

也许如果我描述整个有问题的情况会更好:

  • 当插入区域性字符如:,Ą,,,,((等等 – 波兰语区域字符)时,通过TDS协议 – 从Web应用程序中“插入到”查询,它们在mssql表中显示为:a ±),A(而不是Ą),c,L,z等
  • 目标列types是nvarchar(MAX)
  • 我查看了“槽线”(使用WireShark)发送的数据,所有数据都使用UTF-16编码发送,看起来没问题:例如,Ą以U + 0104发送。
  • 当将相同的string插入到本地数据库实例(Microsoft SQL Server Express Edition)时,它可以正常工作,但是在远程主机上(在客户位置 – 它是Microsoft SQL Server标准版64位)发生此“解除区域化”。 这就是为什么我想这是关于SQL Server的configuration,因为唯一的区别是从Web应用程序端select其他的SQL Server(所以TDS的驱动程序,configuration,连接设置等是相同的)。

我希望有人能帮助我。

我发现了这个问题的祸根。 它是Unicodestring文字的N前缀:

“当SQL Server将没有N前缀的Unicodestring从Unicode转换为SQL Server数据库的代码页时,Unicodestring中不存在于SQL Server代码页中的任何字符都将丢失。

http://support.microsoft.com/kb/239530

我假设sqlserver的本地实例以某种方式将所有传入的string文字视为Unicodestring,而远程服务器则不会,因此需要N个前缀。

也许这是一个棘手的错误(不知道N前缀的必要性),但我每天使用MySQL而不是mssql。