Ma requête est liée aux réponses que j'ai obtenues pour les questions que j'avais précédemment posées dans le même forum. J'ai une copie d'une base de données client qui est attachée à SQL Server où la base de données centrale existe. La copie contient déjà les données mises à jour. Je veux juste transférer les mises à jour de cette copie à la base de données centrale à la fois en maintenant le même schéma et sont présentes sur le même serveur en utilisant C# .NET. L'une des solutions que j'ai trouvées consistait à créer un paquetage SSIS et à l'exécuter à partir de l'interface utilisateur. Je veux savoir comment je peux créer un paquet SSIS pour y parvenir. Je suis nouveau à SSIS. J'utilise SQL Server 2005 Standard Edition et Visual Studio 2008 SP1 installé. J'ai appris que BIDS 2005 est utilisé pour créer des paquets qui viennent par défaut avec SQL Server 2005. Quelqu'un peut-il s'il vous plaît me donner un exemple que je suis nouveau à ce sujet.Comment créer un package SSIS pour mettre à jour d'une base de données vers une autre base de données dans le même serveur
Répondre
Il n'y a pas de moyen facile de le faire dans SSIS que je connais. Pour chaque table, vous devez écrire un proc qui peut être appelé dans SSIS en utilisant le Tâche Execute SQL. Par exemple:
table src
SSN FIRST_NAMELAST_NAME
11111111 Jeff Williams
22222222 Sara Jenkins
33333333 George Anderson
dest Tableau
SSN FIRST_NAMELAST_NAME
11111111 Jeff Williams
22222222 Sara Fleurs
55555555 Jessica Billows
Proc:
INSERT INTO dest (SSN, First_name, Last_Name)
SELECT s.SSN, s.first_name, s.last_name DE GAUCHE de @src INSCRIPTION @dest d ON d. = s.SSN SSN OÙ d.SSN IS NULL
MISE À JOUR dest
SET dest.First_Name = src.First_Name, dest.Last_Name = src.Last_Name
DE dest JOIN src ON src.SSN = dest.SSN
Produire ce type de logique peut s'avérer un peu fastidieux. Vous pouvez utiliser un outil pratique comme les portes rouges sql comparer pour accomplir ceci beaucoup plus rapidement: http://www.red-gate.com/products/SQL_Data_Compare/index.htm
Bonne chance!
Si vous mettez simplement à jour des données dans une table à partir de données d'une autre table, je dirais que SSIS est trop compliqué pour cela. Je voudrais créer un proc que votre paquet .NET peut appeler, ce qui simplifierait le processus et faciliterait la courbe d'apprentissage.
Merci pour la réponse. La copie de la base de données client peut consister en de nouvelles insertions de données ainsi que des mises à jour pour de nombreuses tables et non une seule table. Je souhaite que les modifications soient reflétées dans la base de données centrale. Je ne suis pas concerné par la suppression car je ne suis intéressé que par le transfert des mises à jour et des nouvelles insertions déjà présentes dans la copie de la base de données client vers la base de données centrale. Il y a au moins 50 tables et peut-être un nombre égal de vues et de procédures stockées. –
Merci beaucoup ... :) Je suis très nouveau à SSIS aussi. Ce peut être une tâche ardue pour moi de répéter les procédures pour toutes les tables mais je pense que je peux seulement voir ceci comme solution pour l'instant. Red-gate sera une solution coûteuse pour moi car je ne peux pas me le permettre. Puis-je être en contact avec vous?Pouvez-vous me passer votre email-ID afin que je puisse au moins vous envoyer un mail si j'ai des questions. Merci encore! :) –
Pour une raison quelconque, la déclaration INSERT n'a pas fonctionné pour moi. Je suppose que vous avez essayé d'insérer d'une table à l'autre dans la même base de données. J'ai essayé et j'ai eu une erreur. Pouvez-vous s'il vous plaît vérifier une fois? –
Je viens de modifier votre requête et je pense que cette requête devrait fonctionner pour moi .. :) INSERT INTO dest (SSN, FName, LName) Sélectionnez source.SSN, source.FName, source.LName FROM source LEFT JOIN destination ON source. SSN = dest.SSN ET dest.SSN IS NULL WHERE source.SSN NOT IN (sélectionnez dest.SSN de dest) –