ошибка в сценарии sql с 'openrowset' - PullRequest
2 голосов
/ 14 декабря 2010

У меня проблема с моим 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

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

Сообщение 7357, уровень 16, состояние 2, строка 1 Не удается обработать объект «ВЫБОР» Мобильный номер, Фамилия, Имя FROM [SampleData $] ". Поставщик OLE DB" Microsoft.Jet.OLEDB.4.0 "для связанного сервера" (null) "указывает, что либо у объекта нет столбцов, либо у текущего пользователя нет разрешений на этот объект.

Есть ли какое-то решение для этого? Я действительно не могу найти ничего за последние 3 часа .. В основном, я просто хочу манипулировать данными из файла Excel, а затем сохранить их в базе данных SQL Server 2005, но сейчас я хочу получить данные из файла Excel в сервер sql .. спасибо за помощь ..

1 Ответ

1 голос
/ 14 декабря 2010

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

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

    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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...