2016-09-16 6 views
0

Я использую этот код для импортировать Excel файл в таблицу SQLExcel в SQL ошибок таблицы Msg 7350

USE master 
GO 
sp_configure 'show advanced options', 1; 

RECONFIGURE; 
GO 

    sp_configure 'Ad Hoc Distributed Queries', 1; 

    RECONFIGURE; 
    GO 

insert into memberform (id) 
    SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\\test.xls;HDR=YES', 'select * from [Sheet1$]') 

Но я получаю сообщение об ошибке:

Msg 7350, Level 16, State 2, Line 1 Cannot get the column information from OLE DB provider "Microsoft.Jet.OLEDB.4.0" >for linked server "(null)".

Есть ли что-то я должен сначала параметризоваться в sql?

+0

Документы: «OPENROWSET не принимает переменные для своих аргументов». Вам нужно выполнить шаги в сообщении. – Serg

+0

Пожалуйста, не используйте пробелы в команде 'OPENROWSET'! –

ответ

1

Я нашел решение, я только что установил бит AccessDatabaseEngine_X64. Причина Мой sql - 64 бит, а мой офис - 32 бит, поэтому он не работал. Проблема в том, что вы не можете установить Access Database Engine x64 на Office 2007 32bit. Вам понадобятся следующие инструкции: https://knowledge.autodesk.com/support/autocad-civil-3d/troubleshooting/caas/sfdcarticles/sfdcarticles/How-to-install-64-bit-Microsoft-Database-Drivers-alongside-32-bit-Microsoft-Office.html

Также в моем коде я должен использовать туз, установленный в jet.Also, потому что я использую excel 2007, мне нужно изменить его на excel 12.0. Как пример ниже

SELECT * FROM OPENROWSET ('Microsoft.Ace.OLEDB.12.0', 'Excel 12.0;Database=C:\\test.xlsx;HDR=YES', 'select * from [Sheet1$]') 
2

В основном, Ad hoc Distributed Queries отключены по умолчанию в SQL Server из-за конфигурации системы безопасности, и вы не можете использовать либо OPENROWSET или OPENDATASOURCE, и если вы не можете выполнить эти функции ROWSET, то вы не можете получить доступ к любым удаленным источникам данных.

Выполнить следующие запросы, чтобы включить эти опции, чтобы позволить вам работать на них без каких-либо дополнительных вопросов:

USE master 
GO 
sp_configure 'show advanced options', 1; 

RECONFIGURE; 
GO 

sp_configure 'Ad Hoc Distributed Queries', 1; 

RECONFIGURE; 
GO 

От выхода, можно увидеть, что «специальные Распределенные запросы» настройка изменяется от 0 до 1. Теперь вы можете легко выполнить любой Ad hoc Query

Примечание: по умолчанию этот параметр установлен в 0, и вы должны изменить его на 1, чтобы активировать эту функцию.

Надеюсь, это поможет!

+0

Спасибо, но теперь я получаю две ошибки: Msg 7399, уровень 16, состояние 1, строка 1 Поставщик OLE DB «Microsoft.Jet.OLEDB.4.0» для связанного сервера «(null)» сообщил об ошибке. Поставщик не предоставил никакой информации об ошибке. Msg 7303, уровень 16, состояние 1, строка 1 Невозможно инициализировать объект источника данных поставщика OLE DB «Microsoft.Jet.OLEDB.4.0» для связанного сервера «(null)». – DiH

+0

Обычно такие ошибки возникают из-за неправильного имени файла или файла, который не доступен для использования. Не возражаете ли вы перезапустить экземпляр SQL Server и затем проверить, работает ли он? –

+0

Ошибка MSG: Msg 7350, уровень 16, состояние 2, строка 1 Невозможно получить информацию о столбцах от поставщика OLE DB «Microsoft.Jet.OLEDB.4.0»> для связанного сервера «(null)». – DiH