SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft dBase Driver
(*.dbf)};DBQ=C:\TEMP','SELECT * FROM MIO.DBF')
Va a buon fine se SQL Server č avviato con l'account LocalSystem, mentre
restisuisce un errore se č avviato da un account di dominio che sulla
macchina con SQL Server, mi dicono, ha privilegi di amministratore.
L'errore č questo:
Server: messaggio 7399, livello 16, stato 1, riga 1
Il provider OLE DB 'MSDASQL' ha segnalato un errore.
[OLE/DB provider returned message: [Microsoft][Driver ODBC dBase] Errore di
rete o disco.]
[OLE/DB provider returned message: [Microsoft][Driver ODBC dBase]Errore
generale. Impossibile aprire la chiave 'Temporary (volatile) Jet DSN for
process 0x7d4 Thread 0x798 DBC 0x2986a62c Xbase' del Registro di sistema.]
[OLE/DB provider returned message: [Microsoft][Driver ODBC dBase]Errore
generale. Impossibile aprire la chiave 'Temporary (volatile) Jet DSN for
process 0x7d4 Thread 0x798 DBC 0x2986a62c Xbase' del Registro di sistema.]
Traccia di errore OLE DB [OLE/DB Provider 'MSDASQL'
IDBInitialize::Initialize returned 0x80004005: ].
Qualche suggerimento?
Ciao, Alessandro
AlessandroD wrote:
> Una select così:
>
> SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft dBase Driver
> (*.dbf)};DBQ=C:\TEMP','SELECT * FROM MIO.DBF')
>
> Va a buon fine se SQL Server è avviato con l'account LocalSystem,
> mentre restisuisce un errore se è avviato da un account di dominio
> che sulla macchina con SQL Server, mi dicono, ha privilegi di
> amministratore. L'errore è questo:
<SNIP>
>
> Qualche suggerimento?
>
Il servizio MSSQLServer sul mio PC utilizza un utente di dominio con diritti
di amministratore e la query
SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft dBase Driver
(*.dbf)};DBQ=C:\','SELECT * FROM Products.DBF')
Restituisce correttamente le righe previste.
Quindi penso che il problema sia relativo all'account che ti hanno dato gli
amministratori di sistema.
Hai provato ad aggirare l'ostacolo creando un linked server?
Non ti assicuro che possa funzionare nel tuo caso, ma da me funziona
correttamente sia con Local System che con l'account di dominio.
Ti allego un piccolo esempio che crea il linked server DBFs.
Ho esportato la tabella Northwind.dbo.Products nel file C:\Products.dbf
utilizzando i DTS, poi ho eseguito il seguente script:
/* Creo il Linked Server DBFs */
EXEC sp_addlinkedserver
'DBFs',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'C:\',
NULL,
'dBase IV'
GO
/* Aggiungo una login */
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'DBFs',
@useself = false,
@locallogin = NULL,
@rmtuser = NULL,
@rmtpassword = NULL
GO
/* Query */
SELECT * FROM DBFs...Products
/* Elimino il Linked Server */
EXEC sp_dropserver 'DBFs', 'droplogins'
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
UGIdotNET - http://www.ugidotnet.org
UGISS - http://www.ugiss.org