Actuellement, je suis assis sur une application d'affaires moche écrit dans Access qui prend une feuille de calcul sur une base bi-quotidienne et l'importe dans un MDB. Je suis en train de convertir un projet majeur qui inclut ceci dans SQL Server et .net, en particulier dans C#.Conversion de projet à SQL Server, pensées de conception?
Pour stocker cette information, il y a deux tables (noms d'alias ici) que j'appellerai Master_Prod et Master_Sheet jointes sur un parent de clé d'identité à la table Master_Prod, ProdID. Il y a également deux autres tables pour stocker l'historique, History_Prod et History_Sheet. Il y a plus de tables qui s'étendent de Master_Prod mais en limitant cela à deux tables à des fins d'explication. Depuis que cela a été écrit dans Access, le sous-programme pour gérer ce fichier est jonché de déclencheurs codés manuellement pour faire face à l'histoire qui ont été et ont été une douleur constante à suivre, une raison pour laquelle je suis content que ça bouge à un serveur de base de données plutôt qu'à un outil RAD. J'écris des déclencheurs pour gérer le suivi de l'historique. Mon plan était/était de créer un objet modélisant la feuille de calcul, analyser les données dans celui-ci et utiliser LINQ pour faire quelques vérifications côté client avant d'envoyer les données au serveur ... Fondamentalement, je dois comparer les données dans le feuille à un enregistrement correspondant (à moins qu'il n'existe pas, puis son nouveau). Si l'un des champs a été modifié, je veux envoyer la mise à jour. A l'origine, j'espérais mettre cette procédure dans une sorte d'assembly CLR qui accepte une liste IEnumerable car je vais déjà avoir la feuille de calcul sous cette forme, mais j'ai récemment appris que ça va être associé à un assez important serveur de base de données que je suis très préoccupé par s'embourber.
Cela vaut-il la peine de mettre en place une procédure stockée CLR? Il y a d'autres points d'entrée où les données entrent et si je pouvais construire une procédure pour les gérer étant donné les objets passés, je pourrais retirer beaucoup de règles métier de l'application au détriment des performances potentielles de la base de données. Fondamentalement, je veux retirer la mise à jour du client et la mettre dans la base de données afin que le système de données gère si la table doit être mise à jour afin que le déclencheur d'historique puisse se déclencher.
Réflexions sur une meilleure façon de mettre en œuvre dans la même direction?
Wow ... Je n'ai pas eu accès à un outil comme celui-ci mais j'ai besoin de demander si je peux l'obtenir. Cela ferait des merveilles pour beaucoup d'autres processus d'importation que nous traitons actuellement en irritant les fonctions personnalisées maintenues ici et là – Mohgeroth
SSIS est livré avec SQL Server –