【问题标题】:OLE DB reported a change in schema version between compile time and run time errorOLE DB 报告编译时和运行时错误之间的架构版本更改
【发布时间】:2018-05-23 08:02:55
【问题描述】:

我有一个用于归档和删除的查询。存储过程正在将数据从链接服务器获取到另一台服务器。然后 sp 正在从源服务器中删除插入的行。

--Table_B and A parameterized. They can change with parameter

INSERT INTO [Server_1].[DB_1].[dbo].[Table_A_1] (ColumnList1) 
--ColumnList has a lot of columns like Column1,Column2
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B_1] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B_1] WHERE (Condition);


INSERT INTO [Server_1].[DB_1].[dbo].[Table_A_2] (ColumnList1) 
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B_2] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B_2] WHERE (Condition);


INSERT INTO [Server_1].[DB_1].[dbo].[Table_A_3] (ColumnList1) 
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B_3] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B_3] WHERE (Condition);


INSERT INTO [Server_1].[DB_1].[dbo].[Table_A] (ColumnList1) 
SELECT ColumnList FROM [Server_2].[DB_2].[dbo].[Table_B] WHERE (Condition);
DELETE FROM [Server_2].[DB_2].[dbo].[Table_B] WHERE (Condition);

当我手动运行 sp 通常它正在工作。但有时 sp 会给出如下错误。此外,当我尝试从 Windows 服务运行 sp 时,它经常会出错。 Table_B_1、Table_B_2 和 Table_B_3 正在收集(它们是 Table_B 的数据,如数字、文件等),但 Table_B(主要和重要的表)没有收集。

链接服务器“Server_2”的 OLE DB 提供程序“SQLNCLI11”报告了表“DB_2”的架构版本在编译时间(“185688636079091”)和运行时间(“185718681838570”)之间发生了变化。“dbo”。表_B""。

如果我开始服务工作超过 50-60 次,参数大约 10 个表正在归档,但其他表没有。我需要一个解决方案。

SQL Server 版本相同。一台机器是快照机器。版本是:

Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64)

【问题讨论】:

标签: sql sql-server oledb sql-server-2016 linked-server


【解决方案1】:

stackoverflow 上的同样问题here

解决方案是:
1. 安装 Mitch Wheat 建议的 Microsoft 修复程序
2.删除表别名
3.运行DBCC FREEPROCCACHE WITH NO_INFOMSGS;(解释为here

【讨论】:

  • 如果您发现某个问题是重复的,请将其标记出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多