Problemi con linked server su pc remoto (db access)

mercoledì 05 marzo 2008 - 15.28

liuc Profilo | Junior Member

Ciao a tutti.
Ho la necessità di integrare un db sql server 2005 presente sulla macchina PC1 (in allegato trovate lo schema) con i dati prelevati da 3 file excel e un database access.
Ho fatto una prova per cercare di accedere a quest'ultimo ma non ci sono ancora riuscito.
Il database si trova in una cartella remota a cui è possibile accedere specificando username e password (diciamo userX e pwdX).

L'idea migliore mi è sembrata creare un linked server al db access (remoto) con l'obiettivo di predisporre un job da eseguire la notte per scaricare i dati sul db sql.

Ho eseguito i seguenti comandi per aggiungere il server e il login :
EXEC sp_addlinkedserver
@server = N'rmtAccessDB',
@provider = N'Microsoft.Jet.OLEDB.4.0',
@srvproduct = N'OLE DB Provider for Jet',
@datasrc = N'\\server\folder\database.mdb'
GO

-- Set up login mapping using current user's security context
EXEC sp_addlinkedsrvlogin
@rmtsrvname = N'rmtAccessDB',
@useself = N'false',
@rmtuser = N'Admin',
@rmtpassword = ''

Provando ad eseguire una query sul server collegato ottengo il seguente errore :

OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "rmtAccessDB" returned message "Il modulo di gestione di database Microsoft Jet non è in grado di aprire il file '\\server\folder\database.mdb'. Il file è già aperto con accesso esclusivo da un altro utente o è necessario disporre dell'autorizzazione per visualizzare i dati.".
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "rmtAccessDB".

Su un altro forum mi è stato consigliato di cambiare, da configuration manager, la modalità di accesso del Sql Server Agent da "Local system" a "This account" dove come account ho utilizzato uno creato sul server (sql) ad avente stesso username e passwword dell'account sulla macchina remota (userX e pwdX di prima). Risultato: niente!!! Ottengo sempre lo stesso errore.

Dov'è che sbaglio?
Avete da propormi soluzioni alternative?
Grazie mille.

lbenaglia Profilo | Guru

>OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "rmtAccessDB"
>returned message "Il modulo di gestione di database Microsoft
>Jet non è in grado di aprire il file '\\server\folder\database.mdb'.
>Il file è già aperto con accesso esclusivo da un altro utente
>o è necessario disporre dell'autorizzazione per visualizzare
>i dati.".

Verifica che l'account utilizzato dai servizi MSSQLServer e SQL Server Agent dispongano delle dovute permission per accedere alla share.

>Su un altro forum mi è stato consigliato di cambiare, da configuration
>manager, la modalità di accesso del Sql Server Agent da "Local
>system" a "This account" dove come account ho utilizzato uno
>creato sul server (sql) ad avente stesso username e passwword
>dell'account sulla macchina remota (userX e pwdX di prima). Risultato:
>niente!!! Ottengo sempre lo stesso errore.
Esatto, assegna le permission a tale account per accedere alla share

>Grazie mille.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

liuc Profilo | Junior Member

Allora, adesso funziona.
Riassumo cosa ho fatto.

Sulla macchina remota (RMT)ho creato un account (rmtACCOUNT) con i diritti necessari per accedere alla cartella in cui si trova il database (access nel mio caso).

Sulla macchina dovè è installato SqlServer (SRV) ho creato la stessa utenza (rmtACCOUNT con stesso username e stessa password).

Volendo eseguire un job per accedere al db remoto , da sql Server Configuration Manager ho modificatole modalità di accesso del Sql Server Agent e le ho impstate su "Account" specificando esattamente la username e la password di rmtACCOUNT.

In questo modo eseguendo il job funziona.


Ho provato poi ad eseguire una query all'interno di SqlServer ma mi ha ridato l'errore. Mi sono ricordato di aver fatto l'accesso all'istanza di sqlserver con l'autenticazione di windows (avevo aperto la macchina come amministratore e non come rmtACCOUNT). Mi sono quindi ricollegato alla macchina come rmtACCOUNT , ho aperto sqlserver con l'autenticazione di windows e acnhe la query funziona.
Ora mi resta da capire se è possibile, accedendo a sqlserver con username e password 8non più con l'autenticazine di windows), come faccio ad eseguire le query sul db remoto. Non ci sono ancora riuscito.

lbenaglia Profilo | Guru

>Volendo eseguire un job per accedere al db remoto , da sql Server
>Configuration Manager ho modificatole modalità di accesso del
>Sql Server Agent e le ho impstate su "Account" specificando esattamente
>la username e la password di rmtACCOUNT.
>
>In questo modo eseguendo il job funziona.
>
>
>Ho provato poi ad eseguire una query all'interno di SqlServer
>ma mi ha ridato l'errore.
Hai modificato l'account ANCHE del servizio MSSQLServer?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5