我的想法是在 SQL Server 2008 r2 上跟踪几天所有语句(编写重放模板脚本),然后在较新版本(SQL Server 2014)上针对已部署的数据库版本重放这些语句。
可重播的跟踪文件是否适合解决服务器版本兼容性问题?这种情况有意义吗?
怎样才能认识到问题呢?重放有问题的查询时如何显示错误?
我的想法是在 SQL Server 2008 r2 上跟踪几天所有语句(编写重放模板脚本),然后在较新版本(SQL Server 2014)上针对已部署的数据库版本重放这些语句。
可重播的跟踪文件是否适合解决服务器版本兼容性问题?这种情况有意义吗?
怎样才能认识到问题呢?重放有问题的查询时如何显示错误?
在重放之前,我会:
运行升级顾问和最佳实践分析器
运行跟踪以查找弃用事件
寻找其中的一些问题;上述方法不太可能找到所有这些。
请注意,以上任何一项,也不是重播跟踪,都不能保证找到所有兼容性问题(考虑这样一种情况,即存储过程只会在使用非常特定的参数时出现问题,而这些参数不会恰好在您的过程中使用痕迹)。
当你重放跟踪时,你必须自己解析输出文件或表,甚至可能执行差异以查看新版本上没有发生的错误的任何情况旧版。重播不会产生一个很好的“这是与原始活动不同的地方”报告。您可以通过简单地对 执行连接来做到这一点。
这是我在我自己的系统上创建的一个简单示例 - 您需要将
Error
列添加到您的跟踪中,请注意,我绝对不为此提倡 Profiler,这只是最简单的演示方式。首先,在 2014 年,使用 100 兼容级别创建数据库:现在,运行这两个批次:
跟踪将产生这些:
(再次强调,实际工作中不要使用 Profiler,这只是为了快速说明跟踪可以捕获错误情况,并且如果您让这两个批次在两个不同的服务器上运行相同,您应该可以轻松地加入 TextData平等和错误不平等。是的,我确实意识到这个例子以相反的方式工作 - 错误发生在 2008 年,但在 2014 年有效,但希望它仍然展示了这种方法。)
另请参阅此提示。