我有一个Windows 2016服务器操作系统和一个MSSQL 2017 DB。
我的桌子如下:
CREATE TABLE [dbo].[temp_table](
[varchar_250] [varchar](250) NULL,
[varchar_4000] [varchar](4000) NULL,
[varchar_max] [varchar](max) NULL,
[nvarchar_250] [nvarchar](250) NULL,
[nvarchar_4000] [nvarchar](4000) NULL,
[nvarchar_max] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
此表有一行, 并且所有单元格的值都是“őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓúúÚÚééÉááÁÁ”字符串。
我在Delphi中编写了一个exe程序,一个简单的dll程序和一个isapi dll程序。 所有程序都包含一个过程。此过程包含一个从temp_table中读取的查询。之后,该过程将值写入txt文件。
我的exe程序调用该过程:
结果始终是1-3中的以下内容:
列类型varchar_250,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓÓúúÚÚééÉÉááÁÁ
列类型varchar_4000,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓÓúúúééÉÉÉááÁÁ
列类型varchar_max,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓÓúúúééÉÉÉááÁÁ
列类型nvarchar_250,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓúúúúééÉÉááÁÁ
列类型nvarchar_4000,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓÓúúÚÚééÉÉááÁÁ
列类型nvarchar_max,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓúúúÚÚééÉÉÉááÁÁ
但是,当我将isapi dll加载到浏览器中时,程序会生成文本文件,但数据不正确:
列类型varchar_250,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓÓúúÚÚééÉÉááÁÁ
列类型varchar_4000,值:őőŐŐűűŰŰööÖÖüüüÜÜóóÓÓÓÓúúúééÉÉÉááÁÁ
列类型varchar_max,值:ooOOuuUUööÖÖüüüÜÜóóÓÓÓÓúúÚÚééÉÉááÁÁ
列类型nvarchar_250,值:ooOOuuUUööÖÖüüüÜÜóóÓÓÓÓúúúÚÚééÉÉááÁÁ
列类型nvarchar_4000,值:ooOOuuUUööÖÖüüüÜÜóóÓÓÓÓúúúÚÚééÉÉááÁÁ
列类型nvarchar_max,值:ooOOuuUUööÖÖüüüüÜÜóóÓÓÓÓúúÚÚééÉÉááÁÁ
在1-3种情况下,该过程由我的用户调用,在最后一种情况下,该过程由IIS调用。
最后一种情况是什么问题?
预先感谢您的帮助
答案 0 :(得分:0)
使您的varchar大小乘以2。因此对于varchar(250)将变为varchar(500)。不确定内部结构,但可以解决问题。