Problema con importazione dati DTS

sabato 10 dicembre 2005 - 12.16

fornonad Profilo | Newbie

Ho creato un pacchetto di importazione dati da Access a SQL Server 2000. Se eseguo il pacchetto di importazione dati dal prompt di comandi con DTSRUN tutto va a buon fine, mentre se eseguo il pacchetto da SQL sfruttando xp_cmdShell si verifica un errore di connessione al file, mi dice che il file Access è inesistente,
Volevo sapere come sia possibile una cosa del genere e cosa sto sbagliando, inoltre volevo sapere se esiste un modo differente da xp_cmdShell per eseguire un DTS da una stored procedure

L'istruzione che uso dal prompt dei comandi è:
DTSRun /S "192.1.1.249" /U "sa" /N "offerteProdottiSrl" /G "{BFB4C673-D65A-457B-B3F4-181FF5274A}" /W "0"
mentre l'istruzione che uso in T-SQL è:
xp_cmdshell 'DTSRun /S "192.1.1.249" /U "sa" /N "offerteProdottiSrl" /G "{BFB4C673-D65A-457B-B3F4-C8181FF5274A}" /W "0" '

grazie dell'attenzione

lbenaglia Profilo | Guru

> Ho creato un pacchetto di importazione dati da Access a SQL Server 2000.
> Se eseguo il pacchetto di importazione dati dal prompt di comandi con DTSRUN
> tutto va a buon fine, mentre se eseguo il pacchetto da SQL sfruttando xp_cmdShell
> si verifica un errore di connessione al file, mi dice che il file Access è inesistente

Ciao fornonad,

spiegaci un po' meglio il contesto di questo DTS.

- Il file mdb si trova sul medesimo computer che ospita SQL Server oppure si trova in una share di rete?
- Con che utente vengono eseguiti i servizi MSSQLServer e SQL Server Agent?
- Il DTS con la xp_cmdshell è per caso richiamato in un job schedulato?

> grazie dell'attenzione
Prego.

Ciao!

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

fornonad Profilo | Newbie

cercherò di contestualizzare meglio il mio problema

>- <I>Il file mdb si trova sul medesimo computer che ospita SQL Server oppure si trova in una share di rete?</I>
Il file si trova in una cartella condivisa su un altro server

>- <I>Con che utente vengono eseguiti i servizi MSSQLServer e SQL Server Agent?</I>
L'utente che esegue il pacchetto è uno con le massime autorizzazioni di gestione di SQL Server (al pari di SA)

- <I>Il DTS con la xp_cmdshell è per caso richiamato in un job schedulato?</I>
Il DTS verrà richiamato attraverso una Windows Application in .Net solo al momento del bisogno. A proposito vorrei porre un altro quesito: nel PC dove verrà eseguita la Windows Application devo preoccuparmi di copiare DTSRUN o non avrò problemi?

grazie ancora



ciao ciao adry

lbenaglia Profilo | Guru

>>- <I>Il file mdb si trova sul medesimo computer che ospita SQL Server oppure si trova in una share di rete?</I>
>Il file si trova in una cartella condivisa su un altro server
>
>>- <I>Con che utente vengono eseguiti i servizi MSSQLServer e SQL Server Agent?</I>
>L'utente che esegue il pacchetto è uno con le massime autorizzazioni di gestione di SQL Server (al pari di SA)

Ciao adry,

non intendevo l'utente che esegue il pacchetto, ma l'account windows con il quale vengono eseguiti i servizi MSSQLServer e SQL Server Agent!
Molto probabilmente questi servizi girano con l'utente LocalSystem il quale ha diritti amministrativi SOLO sul PC locale, quindi non è in grado di accedere ad alcuna share di rete.
Se sei all'interno di un dominio, definisci un utente Windows con le permission necessarie ad accedere alle share di rete ed utilizzalo per l'esecuzione dei servizi, diversamente se sei in workgroup definisci sul PC locale e su quello remoto un utente con il medesimo nome e password ed analogamente utilizzalo per eseguire i 2 servizi.
Per cambiare l'account di un servizio utilizza l'applet services, ricordandoti di riavviarli.


>>- <I>Il DTS con la xp_cmdshell è per caso richiamato in un job schedulato?</I>
>Il DTS verrà richiamato attraverso una Windows Application in .Net solo al momento del bisogno. A proposito
>vorrei porre un altro quesito: nel PC dove verrà eseguita la Windows Application devo preoccuparmi di copiare
>DTSRUN o non avrò problemi?

Per eseguire un DTS remoto potresti definire un JOB che richiama il DTS senza schedularlo. Per eseguirlo sarà sufficiente richiamare la stored procedure di sistema sp_start_job.


>grazie ancora
Prego.

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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5