我们正在客户现场遇到一个奇怪的错误。 我们已经设法缩小到只能使用Management Studio和SQL Server复制行为的程度。
我们有两台机器,A和B:
+ ------------ + + -------------------- + | [A] | | [B] | | pipe理| --------------> | SQL Server 2008 R2 | | 工作室| | 企业x64 | + ------------ + + -------------------- +
我们在计算机A的Management Studio上运行一个SQL脚本,对着计算机B上的SQL Server实例。 我们实际上并没有执行脚本,只是parsing它。
大多数情况下,parsing操作正常。 偶尔(看似随机),parsing操作失败,语法错误。 该错误消息显示了脚本中出现错误的部分,该部分显示为原始脚本中的一些SQL已被截断并附加了随机字符。
一个例子:
原始的SQL:
SELECT DISTINCT ST.TABLE_NAME as TableName FROM INFORMATION_SCHEMA.TABLES AS ST INNER JOIN INFORMATION_SCHEMA.COLUMNS AS SC ON SC.TABLE_NAME = ST.TABLE_NAME WHERE ST.TABLE_TYPE = 'BASE TABLE' AND SC.COLUMN_NAME = 'Identity' AND ST.TABLE_NAME != 'dtproperties' ORDER BY ST.TABLE_NAME
出错的SQL(由SQL Server报告):
SELECT DISTINCT ST.TABLE_NAME as TableName FROM INFORMATION_SCHEMA.TABLES AS ST INNER JOIN INFORMATION_SCHEMA.COLUMNS AS SC ON SC.TABLE_NAME = Sā怊
上面的例子显示了查询是如何被破坏的。 它并不总是会发生,并不总是导致错误的同一个SQL位。 对另一个SQL Server实例parsing此脚本不会产生错误,表明该脚本正常。
看来有些东西正在破坏正在接收服务器的SQL。 这导致我认为问题在于客户端或者从客户端到服务器的SQL传输。 我有一个SQL错误发生期间的SQL跟踪,它显示SQL Server收到SQL时已经损坏。
我们一直无法追查这种行为的任何可能的原因,所以不能find解决办法。 由于这些错误是随机发生的,因此生成繁殖步骤以提交错误报告也非常困难。
有任何想法吗?
拔出SQL Server。 时间进行系统检查。 内存(计算器,但也可能是网卡)是罪魁祸首。 我期望看到内存错误出现。