errore script SQL con 'openrowset'
-
09-10-2019 - |
Domanda
Sto avendo un problema con il mio script 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
quando si tenta di eseguire questo, genera questo errore:
Msg 7357, livello 16, stato 2, riga 1 Impossibile elaborare l'oggetto "SELECT Numero di cellulare, Cognome, Nome di battesimo FROM [SampleData $]". Il provider OLE DB 'Microsoft.Jet.OLEDB.4.0' per il server collegato '(null)' indica che sia l'oggetto non ha colonne o l'utente corrente non dispone delle autorizzazioni su quell'oggetto.
C'è qualche soluzione per questo? Io davvero non riesco a trovare alcuna negli ultimi 3 ore .. In sostanza, voglio solo per manipolare i dati da un file Excel, quindi salvarlo database SQL Server 2005, ma per ora, voglio recuperare i dati dal file Excel per SQL server .. grazie per l'aiuto ..
Soluzione
Ho ottenuto questo al lavoro con un foglio di calcolo a livello locale. dimenticare OPENROWSET
-
Creare un intervallo denominato nel vostro spreadheet excel. Tio fare questo, evidenziare le colonne (tra cui le intestazioni) che si desidera, fare clic destro e selezionare 'nome di una gamma'. Dare a questo un nome, questo sarà il vostro nome della tabella.
-
Salvare e chiudere il foglio di calcolo. SQL Server non sarà in grado di accedervi, se si hve aperto.
-
Aggiungi un server collegato. Seguire le istruzioni in Sezione E di seguito che ti dice come aggiungere un server collegato per fogli di calcolo Excel:
-
Si dovrebbe essere in grado di interrogare il DS tranquillamente, sempre seguendo le istruzioni.
Ecco il codice che funziona per me:
EXEC sp_addlinkedserver 'ExcelSource4',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\sqlss.xls',
NULL,
'Excel 5.0';
GO
SELECT *
FROM ExcelSource4...MyTable2;
E infine. Iniziare ad accettare alcune risposte e votare eventuali quelli utili. Questa è la linfa vitale di StackOverflow.