Переход от 32-разрядного к 64-разрядному, как заставить работать связанный сервер (sp_addlinkedserver) - PullRequest
0 голосов
/ 02 августа 2010

Вот пример кода, который отлично работал на 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

Еще одна вещь, которую я пробую, это создать файл .fmt из таблицы, используя утилиту bcp, чтобы я мог определить формат читаемого файла.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 03 августа 2010

Я думаю, что все еще есть только 32-битный драйвер для Excel. Поэтому я не знаю, сможете ли вы использовать связанный сервер с этим драйвером.

Лучше всего было бы импортировать данные с помощью мастера импорта данных и сохранить пакет (один из последних шагов мастера), после чего вы можете просто повторно запустить пакет, чтобы обновить данные. Все клиентские инструменты 32-битные, поэтому проблем с использованием 32-битного драйвера нет

...