2010-08-02 4 views
0

Вот пример кода, который отлично работал на 32-разрядной машине (SQL Server 2005) и нуждается в обновлении для 64- бит ... Я знаю, что это распространенная проблема, но не удалось найти, как ее исправить!Перемещение с 32-битного на 64-разрядный, как сделать связанный сервер (sp_addlinkedserver) работать

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='[email protected]+''', [Sheet1$])') 
    SELECT @testRows = @@ROWCOUNT, @totalRows = @totalRows + @@ROWCOUNT 
    END 

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

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

+0

Возможный дубликат [Перемещение с 32-разрядной до 64-разрядной машины, как сделать работу связанного сервера] (http://stackoverflow.com/ Вопросы/3389510/move-from-32-bit-to-64-bit-machine-how-to-make-linked-server-work) –

+0

Привет, Да, это дубликат, я не знал, как удалить предыдущий! Я хочу знать, есть ли способ выполнить процедуру процедуры sp_addlinkedserver на 64-битной машине для работы, передавая вышеупомянутые параметры. Я пытаюсь получить данные Excel (sourceFile) и помещать результаты в таблицу, скажем, «TableTest» . Я совершенно новичок в этом, поэтому, вероятно, мои вопросы расплывчаты, надеюсь, что этот комментарий немного упростит. Спасибо за любую помощь! – Amy

ответ

0

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

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