Je fais partie de l'équipe de développement de base de données qui travaille pour le grand eshop. Nous utilisons MS SQL 2016 et ASP.NET. SQL Server est utilisé par les clients de plus de 10 serveurs IIS utilisant le pooling de connexions (nous avons environ 7-10k batch/sec) dans l'environnement de production et nous utilisons 18 serveurs DEV/TESTING IIS (mais seulement une base de données DEV). Nous développons une nouvelle fonctionnalité qui nous oblige à apporter des modifications aux procédures stockées existantes assez souvent.Comment effectuer des procédures de stockage de version efficaces?
Si nous déployons une modification dans un environnement de production, cela fait partie de la modification de la modification de l'application pour IIS et de la modification des procédures de base de données. Lors du déploiement, ils sont toujours modifiés à 5 serveurs IIS, puis à 5 serveurs de plus en plus. En attendant, les versions anciennes et nouvelles existent sur les serveurs IIS. Ces versions doivent coexister pendant un certain temps tout en utilisant les procédures de la base de données en même temps. Au niveau de la base de données, nous résolvons cette situation en utilisant plusieurs versions de la procédure. L'ancienne version de l'application appelle EXEC dbo.GetProduct, la nouvelle version de l'application utilise dbo.GetProduct_v2. Après avoir déployé une nouvelle version de l'application sur tous les services Internet (IIS), tout le monde utilise dbo.GetProduct_v2. Lors du prochain déploiement, la situation sera inversée et dbo.GetProduct contiendra une nouvelle version. Une situation similaire se trouve dans l'environnement de développement et de test. Je réalise pleinement que cette solution n'est pas idéale et je voudrais être inspiré.
Nous considérons séparer la partie de données et la partie logique. Dans une base de données, il y aura des tables de données, d'autres ne contiendront que des procédures et d'autres objets de programme. Lors du déploiement d'une nouvelle version, nous déployons simplement une nouvelle version de la base de données entière contenant la logique et n'aurons pas besoin de créer une version de la procédure. Les procédures de la base de données logique interrogeront la base de données avec des données. Cependant, l'inconvénient de cette solution est l'impossibilité d'utiliser des procédures compilées en mode natif que nous prévoyons d'utiliser l'année prochaine car elles ne prennent pas en charge l'interrogation dans d'autres bases de données.
Une autre option utilise une base de données et les versions de procédures distinctes dans différents schémas ...
Si vous avez des idées, des avantages/inconvénients ou vous savez des outils qui peuvent nous aider et gérer/deploy/utiliser plusieurs versions proc , s'il vous plaît faire un commentaire.
Merci beaucoup
Edit: Nous utilisons TFS et Git, mais cela ne résout pas le versioning des procédures dans la base de données SQL. Ma question principale est de savoir comment gérer la nécessité de gérer plusieurs versions d'applications IIS en utilisant plusieurs versions des procédures dans la base de données.
Avez-vous regardé dans des référentiels sources comme GIT? Il existe plusieurs autres alternatives, mais c'est vraiment ce que vous voulez investir. Https://git-scm.com/ –
Il me divertit quand quelqu'un pose une question, mais leur poste consiste entièrement à déclarer des informations incorrectes sur la question. TFS/Git peut sûrement résoudre le problème du versioning si vous utilisez les bons projets et outils. Regardez dans la comparaison de schéma. –
Quel est votre but ultime? Ne pas avoir à modifier vos références SP dans votre code IIS? Et puis être en mesure de gérer les versions SP dans la base de données seulement? – thomas