INF: Esecuzione di un pacchetto DTS come processo pianificato

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I269074
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sommario
Non è infrequente che i pacchetti DTS (Data Transformation Services) vengano solitamente eseguiti correttamente da SQL Server Enterprise Manager, ma non come processi pianificati. Ciò dipende in genere dal contesto di protezione in cui viene eseguito il pacchetto, ovvero come processo o in modo interattivo.

In questo articolo sono illustrati i problemi di protezione correlati all'esecuzione di pacchetti DTS.
Informazioni
Di seguito sono elencati alcuni termini utilizzati nell'articolo:
DTSAcronimo di Data Transformation Services.
Autenticazione di SQLSistema di protezione basato su accessi e password di Microsoft SQL Server.
Protezione standardVedere Autenticazione di SQL.
Autenticazione di SQL ServerVedere Autenticazione di SQL.
Autenticazione di Microsoft Windows NTQuando un utente si connette utilizzando un account utente di Microsoft Windows, SQL Server verifica che il nome dell'account e la password siano state convalidate al momento dell'accesso al computer che esegue Microsoft Windows NT, Microsoft Windows 2000, Microsoft Windows 95 o Microsoft Windows 98.
Protezione integrataVedere Autenticazione di Microsoft Windows NT.
Autenticazione di Windows NT o Microsoft Windows 2000Vedere Autenticazione di Microsoft Windows NT.
Account o accesso di Microsoft Windows NT corrispondente all'accesso o all'account di WindowsCorrisponde all'account di accesso di Microsoft Windows NT o di Microsoft Windows 2000.
Agente SQLServizio Agente SQL Server
SEMSQL Server Enterprise Manager

Dove vengono eseguiti i pacchetti DTS?

Uno dei problemi più frequenti relativi ai pacchetti DTS è rappresentato dal diverso comportamento quando un pacchetto viene eseguito da SQL Enterprise Manager e quando invece viene pianificato come processo. Se avviato da Progettazione DTS in SQL Enterprise Manager (SEM), il pacchetto viene eseguito dal computer in uso. Se l'operazione viene effettuata dal server, sia fisicamente che tramite software di accesso remoto, il pacchetto viene eseguito sul server. Se invece viene effettuata da una workstation e il server SQL Server è stato registrato in Enterprise Manager, il pacchetto viene eseguito sulla workstation. Il contesto di protezione del pacchetto corrisponde a quello dell'account di Windows NT utilizzato per accedere al computer. Quando il pacchetto viene eseguito come processo pianificato, il pacchetto viene sempre eseguito sul server.

Spesso gli sviluppatori creano e testano il pacchetto DTS in modo interattivo sulla propria workstation tramite Progettazione DTS di Enterprise Manager. Una volta completato il debug, il pacchetto DTS viene pianificato come processo. Ciò implica lo spostamento del pacchetto dalla workstation dello sviluppatore al server. Se era in corso il caricamento di dati di testo in SQL Server, l'esecuzione del pacchetto non verrà completata a meno che il file di testo e il relativo percorso non siano disponibili sul server. Se era in corso la connessione a un altro server, l'esecuzione del pacchetto non verrà completata a meno che il contesto di protezione del processo non supporti tale connessione.

A chi appartiene il pacchetto DTS?

I pacchetti vengono pianificati creando un processo gestito dal servizio Agente SQL. Questo processo, così come qualsiasi altro processo pianificato, è associato a un proprietario, che può essere un accesso SQL Server o un account Windows NT.

Per determinare il proprietario:
  • Fare doppio clic sul processo in Enterprise Manager, quindi esaminare la casella combinata a discesa relativa al proprietario.

    Oppure

  • Eseguire la stored procedure di sistema msdb.dbo.sp_help_job.
Il contesto di protezione in cui viene eseguito il processo è determinato dal proprietario del processo. Se il processo appartiene a un accesso non incluso nel ruolo server con privilegi di amministratore di sistema, il pacchetto verrà eseguito nel contesto dell'account SQLAgentCmdExec e disporrà dei diritti e delle autorizzazioni di tale account. All'account SQLAgentCmdExec non sono in genere assegnati altri diritti all'esterno del computer locale SQL Server. L'esecuzione di qualsiasi pacchetto che richiede una connessione a un altro computer non verrà pertanto completata se pianificata come processo di proprietà di un accesso non incluso nel ruolo con privilegi amministrativi.

Se il processo appartiene a un account, ad esempio un accesso SQL Server o un accesso autenticato Windows NT, incluso nel ruolo con privilegi amministrativi, il processo dell'Agente SQL verrà eseguito nel contesto dell'account utilizzato per l'avvio del servizio Agente SQL.

Se inoltre il processo appartiene a un account di dominio Windows NT e il pacchetto è memorizzato nel server o nel repository di SQL Server non come file, è necessario avviare il servizio SQL Server utilizzando un account dello stesso dominio o un account di un dominio di tipo trusted. Se ad esempio il processo dell'Agente SQL appartiene a un account del dominio USA, l'account utilizzato per avviare il servizio SQL Server deve essere incluso nel dominio USA o in un dominio trusted dal dominio USA. Se il servizio SQL Server viene avviato con un account locale, l'esecuzione del pacchetto non verrà completata.

Quali fattori determinano il proprietario?

Domanda: quando si fa clic con il pulsante destro del mouse sul pacchetto DTS e si sceglie di pianificare l'esecuzione del pacchetto, in che modo viene assegnato il proprietario? Risposta: il proprietario del processo dell'Agente SQL dipende dalla registrazione del server SQL Server in Enterprise Manager. Se il server SQL Server viene registrato con autenticazione Windows NT, il proprietario del processo pianificato corrisponde all'account utilizzato per l'avvio del servizio Agente SQL. Se il server SQL Server è registrato in SEM con l'autenticazione SQL Server, ad esempio con l'accesso SA, il proprietario del processo coincide con l'accesso SQL Server.

Per cambiare il proprietario del pacchetto:
  1. Fare doppio clic sul processo in Enterprise Manager.
  2. Scegliere la scheda Generale, quindi fare clic sulla casella combinata a discesa relativa al proprietario.
È anche possibile utilizzare la stored procedure di sistema msdb.dbo.sp_update_job.

In che modo vengono avviati i pacchetti DTS?

Se si esegue manualmente un pacchetto tramite l'utilità della riga di comando DTSRun.exe, il contesto di protezione è quello dell'account Windows utilizzato per l'accesso al computer. Se si esegue il pacchetto con DTSrun.exe tramite la stored procedure avanzata xp_cmdshell, il contesto sarà quello dell'account utilizzato per avviare il servizio SQL Server, purché l'utente che ha eseguito xp_cmdshell sia incluso nel ruolo con privilegi amministrativi. Se l'utente che ha eseguito xp_cmdshell non è un account del ruolo con privilegi amministrativi, DTSRun.exe verrà eseguito nel contesto dell'account SQLAgentCmdExec.

Se il servizio SQL Server è stato avviato con l'account di sistema locale, per il pacchetto DTS non sono disponibili autorizzazioni all'esterno del computer in cui viene eseguito SQL Server.

Se il servizio SQL Server viene avviato con un account Windows NT, il pacchetto disporrà degli stessi diritti e delle stesse autorizzazioni dell'account Windows NT. Se l'account Windows NT coincide con quello locale e quindi non un account di dominio, per il pacchetto non saranno disponibili diritti all'esterno del computer in uso. Se invece l'account Windows NT è un account di dominio, il pacchetto può accedere alle risorse su più computer appartenenti a tale dominio.

In che modo vengono effettuate le connessioni con autenticazione Windows NT?

Un pacchetto DTS contiene talvolta un oggetto per effettuare una connessione a un'origine dati tramite l'autenticazione Windows NT. Il contesto di protezione utilizzato per questa connessione coincide con quello del pacchetto in esecuzione. Se il pacchetto viene eseguito da un prompt dei comandi con DTSRun.exe, verranno applicate le credenziali dell'account Windows NT utilizzato per l'accesso. Se il pacchetto viene eseguito come processo dell'Agente SQL Server, verrà stabilita una connessione di protezione integrata con l'account utilizzato per l'avvio dell'Agente SQL, presupponendo che il proprietario del pacchetto sia incluso nel ruolo con privilegi amministrativi.

Problemi comuni

Di seguito sono riportati altri problemi comuni riscontrabili quando si eseguono pacchetti DTS come processi pianificati nell'Agente SQL.

Unità connesse

Se il pacchetto è basato sulla posizione fisica di un file contrassegnato da una lettera dell'unità connessa, è possibile che l'esecuzione del pacchetto non venga completata se eseguito come processo pianificato dell'Agente SQL, indipendentemente dal proprietario. Agente SQL è un servizio di Windows NT e i servizi di Windows NT non riconoscono le lettere di unità connesse. Il mapping delle unità è incluso nel profilo utente caricato quando un utente accede a una sessione di Windows NT. I servizi non gestiscono i profili utente. Utilizzare pertanto un percorso UNC invece di una lettera di unità connessa.

Percorso relativo

Un percorso relativo (o lettera di unità) è specifico della posizione corrente del pacchetto, ad esempio C:\. Se un pacchetto viene definito su una workstation e successivamente pianificato, la posizione di esecuzione del pacchetto cambia. I percorsi delle lettere di unità fanno ora riferimento a una diversa posizione fisica, ovvero quella del server. L'esecuzione del pacchetto non viene completata a meno che non vengano spostati sul server anche i file referenziati dal pacchetto.

Componenti COM in script ActiveX

Se in uno script ActiveX vengono effettuate chiamate a componenti COM, ad esempio a oggetti Microsoft ActiveX Data Objects (ADO), Remote Data Objects (RDO) o Decision Support Object (DSO), i componenti chiamati devono essere disponibili nel computer da cui viene eseguito il pacchetto DTS. Se si esegue il pacchetto da Progettazione DTS in SEM o da DTSRun.exe, i componenti devono essere disponibili nel computer in uso. Se si pianifica l'esecuzione del pacchetto dall'Agente SQL, i componenti chiamati devono essere caricati sul computer che ospita il server SQL Server.

Protezione dei pacchetti

I pacchetti DTS dispongono di password proprietario e di password utente. Tali password consentono di limitare gli utenti autorizzati alla modifica e all'esecuzione dei pacchetti. Nessuna delle due password influisce tuttavia sul contesto di protezione in cui viene eseguito il pacchetto.
Proprietà

ID articolo: 269074 - Ultima revisione: 12/05/2015 21:08:11 - Revisione: 4.0

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbinfo KB269074
Feedback