从 32 位迁移到 64 位,如何使链接服务器 (sp_addlinkedserver) 工作

发布于 2024-09-12 20:51:36 字数 790 浏览 4 评论 0原文

以下是一些示例代码,在 32 位计算机(SQL Server 2005)中运行良好,需要更新为 64 位...我知道这是一个常见问题,但一直无法找到解决方法!

    DECLARE @sourceFile varchar(255), @testRows int

  SELECT @sourceFile = @xmlInfo.value('(/SelectFile/DataSource)[1]', 'VARCHAR(100)')
  EXEC sp_addlinkedserver 'SomeData', 'Excel', 'Microsoft.Jet.OLEDB.4.0', @sourceFile, '', 'Excel 8.0', ''

   IF @xmlInfo.exist('/SelectFile/DataSource') = 1
   BEGIN
    EXEC(' INSERT INTO TableTest
      SELECT col1_Id, col2, Replace(col3, '' '', '''')
      FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
          ''Excel 8.0;HDR=Yes;Database='+@sourceFile+''', [Sheet1$])')
     SELECT @testRows = @@ROWCOUNT, @totalRows = @totalRows + @@ROWCOUNT
   END

我正在尝试的另一件事是使用 bcp 实用程序从表创建 .fmt 文件,这样我就可以定义正在读取的文件的格式。

任何帮助将不胜感激!

Here is some sample code that worked fine in a 32-bit machine (SQL server 2005) and needs to be updated for a 64-bit... I know this is a common problem but have not been able to find how to fix it!

    DECLARE @sourceFile varchar(255), @testRows int

  SELECT @sourceFile = @xmlInfo.value('(/SelectFile/DataSource)[1]', 'VARCHAR(100)')
  EXEC sp_addlinkedserver 'SomeData', 'Excel', 'Microsoft.Jet.OLEDB.4.0', @sourceFile, '', 'Excel 8.0', ''

   IF @xmlInfo.exist('/SelectFile/DataSource') = 1
   BEGIN
    EXEC(' INSERT INTO TableTest
      SELECT col1_Id, col2, Replace(col3, '' '', '''')
      FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',
          ''Excel 8.0;HDR=Yes;Database='+@sourceFile+''', [Sheet1$])')
     SELECT @testRows = @@ROWCOUNT, @totalRows = @totalRows + @@ROWCOUNT
   END

Another thing I'm trying out is to create a .fmt file from a table, using the bcp utility, so I can define the format of the file being read.

Any help would be greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梨涡 2024-09-19 20:51:36

我认为 Excel 仍然只有 32 位驱动程序。所以我不知道您是否能够使用该驱动程序来使用链接服务器。

最好的选择是使用导入数据向导导入数据并保存包(向导中的最后步骤之一),然后您可以重新运行包来刷新数据。客户端工具都是32位的,所以使用32位驱动程序没有问题

I think there is still only a 32bit driver for Excel. So i don't know if you'll be able to use a Linked Server using that driver.

Your best bet would be to import the data using the Import Data wizard and save the package (one of the final steps in the wizard) then you can just re-run the package to refresh the data. The client tools are all 32bit so there is no problems using the 32bit driver there

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文