使用不同连接的传递查询和链接表查询

时间:2011-08-09 17:25:19

标签: sql-server ms-access odbc database-connection connection-pooling

以前问题的后续问题:Force SET IDENTITY_INSERT to take effect faster from MS Access

我正在从MS Access后端升级到SQL Server后端。许多表都有自动编号主键。我正在尝试按如下方式填充它们(伪代码):

ExecutePassThru "SET IDENTITY_INSERT dbo.Accounts ON"
db.Execute "INSERT INTO sql_Accounts SELECT * FROM mdb_Accounts"
ExecutePassThru "SET IDENTITY_INSERT dbo.Accounts OFF"

在上面的代码中,sql_Accounts是连接到SQL Server中Accounts表的链表,mdb_Accounts是连接到mdb中Accounts表的链表。这失败了,错误

  

当IDENTITY_INSERT设置为OFF时,无法在表'Accounts'中为identity列插入显式值。

我启动了SQL Server Profiler以试图解决问题,问题是我的示例中的每行代码可能使用或不使用不同的服务器进程ID(SPID)。换句话说,他们使用与后端的不同连接。

有没有办法确保他们都使用相同的连接?

1 个答案:

答案 0 :(得分:1)

可能有一个更优雅的解决方案,但这是一次性转换,并且尝试通过连接重用进行复杂的事情并不值得深入探讨。

  1. 在SQL Server上创建一个不包含标识但具有相同模式的登台表。
  2. 将数据加载到该表
  3. 您的身份完全插入SQL Server端。