In SQL Server 2000 è presente l'utente guest nel database msdb. Questo permette a qualunque login dell'istanza di creare job e DTS ed è per questo motivo che una delle prime cose da fare, almeno nelle istanze di produzione, è quella di rimuovere guest dal database msdb. In SQL Server 2005 l'utente è ancora presente nel database msdb ma dispone di privilegi minori che in SQL Server 2000.
Sia in SQL Server 2005 (con le impostazioni di default) che in SQL Server 2000 dopo aver rimosso l'utente guest da msdb gli utenti non-sysadmin non sono in grado di visualizzare i DTS e tantomeno di apportarvi modifiche. Se questo è auspicabile in un ambiente di produzione, può essere un problema negli ambienti di sviluppo dove non si vogliono dare privilegi troppo elevati agli sviluppatori ma al tempo stesso il DBA non vuole e non può stare dietro alle modifiche ai DTS.
Per risolvere il primo problema, ovvero dare la possibilità a tutti di visualizzare ed aprire i DTS dell'istanza è sufficiente concedere il permesso di SELECT sulla tabella sysdtspackages contenuta nell'msdb (attenzione, non alla sysdtspackages90 perchè questa contiene invece i pacchetti SSIS che sono stati salvati in SQL Server). Una volta aperto e modificato il DTS da parte di un non-sysadmin quando si proverà a salvarlo si riceverà un altro messaggio il quale informa che solo un sysadmin oppure l'owner del pacchetto può apportarvi modifiche. Questa volta non è un problema di permessi sull'istruzione che salva il pacchetto, ovvero la sp_add_dtspackage ma, analizzando il codice della stored procedure, possiamo vedere che ad un certo punto viene fatto un check dove viene verificato che l'utente corrente sia un sysadmin oppure il proprietario del pacchetto e, in caso negativo, viene restituito l'errore 14586. Commentando o modificando questa porzione di codice possiamo estendere anche agli sviluppatori la possibilità di apportare modifiche ai DTS.
Bye