【问题标题】:How make use of Bulk Insert API?如何使用批量插入 API?
【发布时间】:2015-09-12 12:51:08
【问题描述】:

我有一对链接的 SQL 服务器:ServerA 和 ServerB。我希望执行以下语句:

INSERT INTO [ServerB].[data_collection].[dbo].[table1] SELECT * FROM [ServerA].[data_collection].[dbo].[table1]

但是,正如我在之前问过here 的问题中所获悉的那样,尽管只有一个表格中的单行。

在前面提到的问题中,有人告诉我解决方法是将访问模式设置为“表格或视图-快速加载”。不幸的是,这稍微超出了我对 SQL 知识的限制。在上述问题的答案中,我被告知以下内容:

要实现这一点,您似乎必须在 SSIS 包中完成工作。关键是在引擎盖下正在执行 INSERT BULK,而不是 SP_cursor (产生错误)。根据这个 MSDN 问题,无法直接访问它 - 它只能通过批量插入 API 访问。

同样,这超出了我的 SQL 知识范围。那么,如何从我现在的位置(只有一对链接服务器)发展到可以使用 INSERT BULK 查询的程度?

【问题讨论】:

  • 我有一些发现。事实证明,我可以将远程记录插入本地服务器,例如来自 ServerA 的脚本执行从 ServerB 插入到 ServerA,或者来自 ServerB 的脚本执行从 ServerA 插入到 ServerB。但是,我无法将本地记录插入远程服务器。这似乎表明这是一个权限问题,而不是 sp_cursor 根本无法处理 766 列。

标签: sql ssis sql-server-2012 oledb linked-server


【解决方案1】:

SSIS 很复杂,因为它的功能非常丰富,如果您对它不满意,我不建议您走这条路。然而,由于这是一个直接的抢夺,我认为您可以通过使用导入导出向导(基本上是一个非常简单的 SSIS 包的向导)来做到这一点。详细说明可以查看here。

您选择源数据库和表,然后选择目标数据库和表,根据需要映射列,然后执行它以传输数据。您甚至可以将该过程保存为 SSIS 作业。祝你好运,希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 2012-10-23
    • 1970-01-01
    • 2016-01-17
    • 2014-04-13
    • 2017-10-05
    • 2015-02-09
    • 2011-06-20
    相关资源
    最近更新 更多