2010-11-05 4 views
2

J'ai besoin de synchroniser les données d'un serveur MS-SQL 2005 & 2008 à mon serveur de développement (mssql 2005 & 2008).Façon de synchroniser la production et tester les bases de données

Le problème est que je ne peux pas créer de fichiers .bak, pas d'autorisations (pour accéder au partage réseau sur lequel la sauvegarde est enregistrée). Le problème n'est pas que je ne puisse pas voir les données (j'ai un accès complet en lecture au serveur de production). Je peux également sauvegarder des données dans des fichiers csv et les lire sur mon système, mais c'est plutôt pénible (encodage, contraintes de références de clés étrangères, avoir à le faire pour chaque table, etc ...). Le problème est que l'administrateur n'a pas le temps de me donner les autorisations nécessaires (il a des problèmes plus importants ...). Comment puis-je toujours synchroniser les données sur mon serveur de développement? J'ai besoin d'une sorte de synchronisation à un fichier, puis le transport de toute façon (manuel par FTP si nécessaire), puis mettre à jour ma base de données de développement. J'ai déjà essayé de sauvegarder sur un fichier de retour sur un partage réseau, mais cela ne fonctionne pas non plus. Cela ne me dérange pas si je dois coder un peu dans mon temps libre, mais je ne veux pas vraiment faire tous les trucs de bas niveau moi-même, comme la résolution des dépendances de contraintes. Pendant que j'y suis, je serais ravi de pouvoir fusionner des données provenant de plusieurs serveurs de production sur ma machine de développement.

Des idées ou des pointeurs?

Répondre

1

Vous pouvez essayer le projet http://sqlinserter.codeplex.com/.

Il crée scipts dans l'insert de forme dans table1 (col1, col2) valeurs (1,2)

+0

Crée-t-il également le schéma et résout les contraintes référentielles? Je suppose que non. Ensuite, il est aussi utile que de lire chaque table dans un ensemble de données et de sauvegarder le jeu de données en XML. Hmmm, je crois que je pourrais laisser tomber toutes les contraintes et peut-être les ajouter à nouveau plus tard. –

+0

Il ne crée pas le schéma. Mais il est capable d'aider avec RI. Quoi qu'il en soit, un meilleur moyen consiste à désactiver les contraintes. –

+0

Oh, bien sûr, les contraintes peuvent être désactivées - a du sens - bien un peu. Avais-je su cela avant ... –

2

Découvrez les données sql comparer:

http://www.red-gate.com/products/SQL_Data_Compare/

C'est ce que nous utilisons quand nous devons synchroniser des bases de données.

+0

Je n'ai pas autorisé à installer le logiciel sur le serveur de production. C'est une bonne politique qui le fera et qui devrait rester ainsi. Cependant, je peux exécuter un logiciel qui n'a pas besoin d'installation. –

+0

Je pense que vous avez seulement besoin de l'installer sur un ordinateur qui peut accéder aux deux bases de données. – Iain

+0

Oui, c'est correct. Il suffit d'accéder au serveur pour ne pas être installé dessus. – kemiller2002

1

Que vérifiez-vous? À moins que vous n'effectuiez des tests de performances ou d'intégration, les données de production ne seront pas très utiles car elles contiennent un grand nombre de cas génériques (qui se répètent des millions de fois) et peu de cas d'angle.

Par conséquent, je synchronise rarement ces deux. Ce que je fais est: J'ai une base de développement (un ensemble de fichiers SQL) que le premier test met en place. Cela contient des données de test artificielles plus des données qui ont causé des bogues en production. Pour rendre cela utile, la base de données de test est aussi petite que possible. Ensuite, nous avons un système de test d'intégration qui est simplement un miroir de la base de données de production. Ceci est utilisé pour les tests de performance et certains gros tests automatiques, mais pas pour les tests unitaires.

+0

Les données artificielles ne sont pas assez bonnes. Je dois avoir des données réelles, pour rapporter et tester le rendu et la conception aussi. Par exemple, pour voir à quel point les colonnes doivent être et si elles doivent être correctes et si les résultats signalés sont corrects, et tester toutes sortes de valeurs nulles possibles, y compris celles obtenues lors de la concaténation d'une chaîne dans SQL 2008. Données artificielles non assez bon pour ça. –

+0

@Quandary: Comment pouvez-vous être sûr d'obtenir des valeurs nulles à tous les endroits possibles si vous ne fabriquez pas les données de test à la main? –

+0

Bon point, ce que je veux vraiment dire est de faire le travail minimum que cela fonctionne avec les données de production, -)) –

0

Votre administrateur n'a pas de sauvegardes régulières planifiées pour la base de données de production?

L'autorisation READ n'est pas suffisante pour sauvegarder une base de données. Vous ne pourrez pas obtenir d'index, de relations ou de procédures stockées sans l'autorisation BACKUP DATABASE.

Vous n'avez pas besoin de ces autorisations si l'administrateur peut simplement vous accorder l'accès aux fichiers de sauvegarde. S'il n'y a pas de fichiers de sauvegarde de votre base de données de production, il pourrait BEAUCOUP BEAUCOUP plus gros à l'avenir.

+0

Il existe des fichiers de sauvegarde, mais je n'ai pas d'autorisation d'accès. Le problème est qu'il n'a pas le temps, même pas de faire quelque chose d'aussi simple que de me fixer quelques permissions. –

+0

Hm. Eh bien, au moins les schémas sont les mêmes pour chaque base de données, correct? Je suppose que vous pourriez essayer quelque chose comme INSERT INTO [db1]. [Table_n] SELECT * FROM [db2]. [Table_n] pour chacune de vos tables ... – Donald

+0

Oui je pourrais le faire si db1 n'était pas sur un serveur citrix un datacenter et db2 sur ma machine locale. Le problème est que j'ai besoin de transférer les données comme une sorte de fichier via sftp à mon ordinateur local. –

Questions connexes