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

时间:2010-08-02 16:25:41

标签: sql-server sql-server-2008 linked-server bcp openrowset

以下是一些在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文件,因此我可以定义正在读取的文件的格式。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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

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