Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nvarchar(max)列仅通过ODBC在SELECT语句中相互干扰_Select_Odbc_Max_Sqldatatypes_Nvarchar - Fatal编程技术网

nvarchar(max)列仅通过ODBC在SELECT语句中相互干扰

nvarchar(max)列仅通过ODBC在SELECT语句中相互干扰,select,odbc,max,sqldatatypes,nvarchar,Select,Odbc,Max,Sqldatatypes,Nvarchar,在最近更新的运行时引擎和SQL Server版本(2008R2至2012)中,我开始遇到一个问题,即通过ODBC进行的较大查询返回空白字段,而这些字段不应该有任何字段。直接在SQL Server中运行相同的查询效果良好 我开始从查询中删除字段,发现查询中的五个文本数据类型字段给我带来了麻烦。SELECT语句中列出的第一个文本字段将显示良好,后续文本字段将不会显示。如果我从查询中删除了除两个字段以外的所有字段,那么剩下的两个字段将通过 由于问题显然发生在ODBC中,我的第一个想法是将windows

在最近更新的运行时引擎和SQL Server版本(2008R2至2012)中,我开始遇到一个问题,即通过ODBC进行的较大查询返回空白字段,而这些字段不应该有任何字段。直接在SQL Server中运行相同的查询效果良好

我开始从查询中删除字段,发现查询中的五个文本数据类型字段给我带来了麻烦。SELECT语句中列出的第一个文本字段将显示良好,后续文本字段将不会显示。如果我从查询中删除了除两个字段以外的所有字段,那么剩下的两个字段将通过

由于问题显然发生在ODBC中,我的第一个想法是将windows 8 ODBC驱动程序从“SQL Server原生客户端11.0”切换到“SQL Server”。这没有帮助

由于文本正在失去支持,我认为它可能是罪魁祸首。我将所有文本字段转换为NVARCHAR(MAX)(我也在寻找unicode支持)。这并没有解决任何问题。接下来,我尝试将页外数据类型转换为页内格式的NVARCHAR(4000)。这解决了问题,但它不能全面工作,因为我有一些字段超过4000个字符

我的问题是:

  • ODBC与导致此问题的页外数据相关的限制是什么。我的理解是,nvarchar(max)数据只有在足够长的情况下才会存储在页面外(我是否错了)。在我使用的示例表中,文本数据字段的长度都不超过255个字符,但是问题仍然存在
  • 如果我能找出哪些字段需要额外的长度,并且只保留那些字段的页外表示,我可能就可以通过了。然而,应用程序的大小使得计算每个字段时间的准确(和可能)使用变得非常困难。我希望我不必走这条路

  • 该表有33列,其中5列最初为文本。这个问题似乎并不取决于文本字段中有多少数据,因为对于空白字段也会发生同样的情况。我刚刚发现了大约15000个字符的字段,确认我不能只使用nvarchar(4000)来处理所有内容。