Ошибка на SQL Script с 'openRowset'
-
09-10-2019 - |
Вопрос
У меня проблема с моим скриптом SQL:
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, уровень 16, состояние 2, строка 1 не может обработать объект «Выберите MobilEnumber, Lastname, FirstName из [Smapledata $]». Поставщик OLE DB "microsoft.jet.oledb.4.0" для связанного сервера "(null)" указывает, что либо объект не имеет столбцов, либо текущий пользователь не имеет разрешений на этот объект.
Есть ли решение для этого? Я действительно не могу найти ничего за последние 3 часа. По сути, я просто хочу манипулировать данными из файла Excel, а затем сохранить в базе данных SQL Server 2005, но сейчас я хочу получить данные из файла Excel в SQL Server .. Спасибо за помощь ..
Решение
Я получил это, чтобы работать с электронную таблицу на местном уровне. забывать OPENROWSET
Создайте названный диапазон в вашей таблице Excel. Tio сделайте это, выделите столбцы (включая заголовки), которые вы хотите, щелкните правой кнопкой мыши и выберите «Назовите диапазон». Дайте этому имя, это будет название вашей таблицы.
Сохраните и закройте свою таблицу. SQL Server не сможет получить к нему доступ, если вы его откроете.
Добавьте связанный сервер. Следуйте инструкциям в Раздел e Далее, в котором сообщает, как добавить связанный сервер для электронных таблиц Excel:
Вы должны быть в состоянии запросить 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.