2010-12-14 5 views
2

У меня проблема с моим SQL скрипт:ошибка сценария SQL с 'OPENROWSET'

SELECT 
    SP.[MobileNumber], 
    SP.[LastName], 
    SP.[FirstName] 
FROM SampleTable1 SP 
INNER JOIN OPENROWSET 
( 
    'Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=C:\devpc11\sample.xls;', 
    'SELECT 
    MobileNumber, 
    LastName, 
    FirstName 
    FROM [SampleData$]') T 
ON SP.[MobileNumber] = T.[MobileNumber] 
GO 

, когда я пытаюсь выполнить это, он генерирует сообщение об ошибке:

Msg 7357, Level 16 , State 2, Line 1 Невозможно обработать объект «SELECT MobileNumber, LastName, FirstName FROM [SampleData $]". Поставщик OLE DB «Microsoft.Jet.OLEDB.4.0» для связанного сервера «(null)» указывает, что либо у объекта нет столбцов, либо у текущего пользователя нет разрешений на этот объект.

Есть ли решение для этого? я действительно не могу найти их в течение последних 3 часов. В принципе, я просто хочу манипулировать данными из файла excel, а затем сохранять его в базе данных sql server 2005, но на данный момент я хочу получить данные из файла excel для сервер sql .. спасибо за помощь.

+0

i уже сделал. Спасибо за напоминание. :) – iceheaven31

ответ

1

Я получил это, чтобы работать с электронной таблицей локально. забыть OPENROWSET

  1. Создайте именованный диапазон в своем Excel-листе. Tio сделайте это, выделите нужные столбцы (включая заголовки), щелкните правой кнопкой мыши и выберите «Назовите диапазон». Дайте это имя, это будет ваше имя таблицы.

    http://www.homeandlearn.co.uk/me/mes9p2.html

  2. Сохранить и закрыть таблицу. SQL Server не сможет получить к нему доступ, если вы откроете его.

  3. Добавить связанный сервер. Следуйте инструкции в разделе E в следующем, который говорит вам, как добавить связанный сервер для таблицы Excel:

    http://msdn.microsoft.com/en-us/library/ms190479.aspx

  4. Вы должны быть в состоянии запросить DS вполне счастливо, опять же следуя инструкции.

Вот код, который работает для меня:

EXEC sp_addlinkedserver 'ExcelSource4', 
    'Jet 4.0', 
    'Microsoft.Jet.OLEDB.4.0', 
    'c:\sqlss.xls', 
    NULL, 
    'Excel 5.0'; 
GO 

SELECT * 
    FROM ExcelSource4...MyTable2; 

И, наконец. Начните принимать ответы и проголосовать за любые полезные ответы. Это жизненная сила StackOverflow.

+0

этот работал! большое спасибо! – iceheaven31

Смежные вопросы