我在运行此查询的问题:问题在SQL Server中运行对链接服务器DELETE语句2008
DELETE FROM [IRPROD]..[BUDGET_USER].[GL_EXP]
WHERE FISCAL_YEAR = 2010
IRPROD是链接服务器到Oracle 10g数据库。它使用Oracle OleDB提供程序进行链接。有~79000条记录需要删除。运行这个查询它删除54.再次运行它给了我这个错误信息。
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "OraOLEDB.Oracle" for linked server "IRPROD" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "OraOLEDB.Oracle" for linked server "IRPROD".
很明显,“灾难性失败”是不好的。但奇怪的是,我可以运行SELECT和INSERT语句整天,它工作正常。我有权删除行。另外,如果我通过Access链接表,我可以删除记录。
任何想法?
有助于诊断的建议:尝试在where子句中添加一个条件,例如WHERE FISCAL_YEAR = 2010 AND some_other_column
mjv
2010-02-12 16:02:50
好主意。我跑了另一个查询,它会删除8行,但它回来并说“0行受到影响”。有趣的是,它需要花费相同的时间才能返回结果(1:15)。现在这个表上没有索引或键。这可能会影响它吗? – 2010-02-12 16:11:25
@Clint这确实是奇怪的(0行受影响,而不是8)。我假设你检查了8行有效_not_删除。在正常/期望的查询的持续持续时间上:没有索引时,要删除的行的选择意味着对各种排序的表扫描,如果表是可用的,则需要相当长的时间并且会花费更多或更少的时间相同数量(仅因某些缓存等而有所不同)。我假设用于检查行,诊断等的选择查询与一个显示相同,但是将'DELETE'替换为'SELECT *' – mjv 2010-02-12 16:44:28