Poo*_*osh 0 c# sql sql-server vb6
我正在处理一个旧的VB6.0应用程序,该应用程序正在转换为C#.在应用程序中查询了许多SQL Server视图.我在VB6.0和C#中传递相同的SELECT语句来查询视图.我也在每种语言中提供完全相同的WHERE子句,并且没有ORDER BY子句.视图确实包含自己的ORDER BY子句.
在VB6.0中,结果集始终以相同的顺序返回,而在C#中,结果集始终以相同的顺序返回.但是,返回VB6.0和C#的订单不匹配.我可以通过VB6.0查询,然后几秒钟后通过C#查询,结果集的顺序不同.
可能导致结果集订单不同的原因是什么?我需要将从新C#代码生成的一些输出文件与VB6.0代码进行比较以进行验证,因此我希望结果集以相同的顺序返回两者,或者至少理解为什么结果集VB6.0和C#之间的顺序不匹配,但是当使用相同的语言调用时,它们总是相互匹配.
Mat*_*lie 12
如果您没有指定,ORDER BY则永远无法保证记录返回的顺序.
订单通常可以返回与聚集索引相关的顺序,或者数据/模式的某些其他特征.但它可以在没有警告的情况下改变,也可以在你能够察觉的原因上改变.
- 这可能是由于哪些内核忙或不忙
- 可能是由于您使用SQL Server的接口
- 可能是由于最近引入的记录
- 或碎片
- 或表/结果的缓存
- 或SQL Server或OS上的补丁
如果订单很重要,请在最终/最外层查询中指定ORDER BY .