2

Je suis un développeur junior dans notre équipe. Dans un projet, nous avons une vingtaine de bases de données dans une instance SQL Server. Nous avons des droits db_owner sur ces bases de données.Développeur: comment obtenir des données de rapport d'environ 20 bases de données?

Mon intention est de surveiller certaines choses de ces bases de données (par exemple la taille du fichier). Mais parce que nous n'avons pas les droits sysadmin, nous n'avons pas tous ces outils de gestion pour ces bases de données. Maintenant, ma solution est d'écrire des "scripts de reporting" en utilisant des procédures stockées. Ces sp utilisent largement sp_foreachdb. Ma question est que c'est une bonne approche pour ce problème? Quelles sont les autres méthodes/solutions disponibles?

Répondre

0

Il semble que vous essayez de trouver une solution technique à un problème politique. Si vous n'avez pas le droit de surveiller les choses que vous devez surveiller, il n'y aura pas de solution satisfaisante. Juste parce que vous surveillez la taille du fichier ne suffit pas - vous voulez également connaître l'espace libre sur le lecteur, et vous ne serez pas en mesure de récupérer cela sans plus de permissions.

Je demanderais aux administrateurs système si vous pouvez leur donner un proc stocké qui sera exécuté avec les permissions sysadmin. Ils peuvent examiner le code, s'assurer que vous ne faites rien de malfaisant, puis signer ce proc stocké avec un certificat. Ils peuvent vous accorder les droits pour exécuter le proc stocké (mais ne pas le modifier) ​​même si vous n'êtes pas dans le rôle sysadmin, et vous obtiendrez les résultats.

Une autre approche consiste à leur donner du code T-SQL qu'ils peuvent implémenter en tant que tâche planifiée de l'Agent SQL Server qui vous envoie les résultats. Vous obtenez les données, mais pas les droits. Je me méfie de l'approche de sp_msforeachdb car si vous n'êtes pas un administrateur système, vous n'aurez probablement pas toujours les droits sur toutes les bases de données du système. S'ils implémentent des outils de surveillance tiers ou partagent le serveur avec plusieurs départements, votre code sp_msforeachdb peut échouer.

+0

Merci pour votre aide. Des pensées très sages! – juur

+0

ce type de surveillance est généralement le travail des administrateurs. vous devriez demander à être promu;) –

0

Je ne sais pas si c'est mieux mais vous pouvez configurer la base de données 21 qui a un tableau les pistes la dernière fois qu'une table intéressante dans l'une des 20 autres bases de données a été mise à jour. Si vous avez également suivi dans ce tableau la dernière fois que vous avez exécuté votre rapport, vous saurez facilement quelle base de données a changé depuis votre dernier cycle de génération de rapports.

Vous ne savez pas comment vos tables sont mises à jour et si vous pouvez modifier une procédure stockée de mise à jour pour marquer votre 21ème base de données ou pas - peut-être un déclencheur d'insertion/mise à jour?

+0

Merci, mais en fait, je ne suis pas intéressé par les mises à jour de table, car mes tables sont insérées en masse (entrepôt de données). – juur

Questions connexes