我试图了解以下情况下的 SQL Server 行为。
我使用在 SQL Server 中创建的链接服务器将大约 50 万行从 Oracle 提取到 SQL Server 2005 数据库中。我正在使用大约 50 个奇数列进行Insert Into select
查询。
我发现查询没有完成,它曾经无限期地运行,直到我手动停止它。但是大约 1 小时后,如果我检查目标表,我就能找到表中的行。但是查询既没有停止执行,也没有释放目标表上的排他锁。
当我使用 Oracle 链接服务器发起一个简单查询时,我发现 Oracle 和 SQL Server 中的一些数据类型必须显式转换(尤其是 Oraclenumeric
到 SQL Server Varchar
)。
在所有出现此问题的数据类型都被显式转换后,我能够毫无问题地完成整个提取,即查询正常停止并释放表上的排他锁。
我的问题是,尽管查询中存在数据类型转换问题,为什么查询仍会获取所有数据,为什么即使在获取所有数据后仍保持锁定?对此的任何解释将不胜感激(即使问题已解决:))