0

J'ai une base de données active sur un serveur d'hébergement partagé. Je fais des changements majeurs au code de mon site et je voudrais corriger certaines erreurs stupides que j'ai commises en concevant la base de données. Ces modifications impliquent la modification de la taille d'un grand nombre de champs et l'application correcte de l'intégrité référentielle entre les tables. Je souhaite effectuer les modifications sur mon serveur de test local et sur le serveur distant si possible.Modification de la base de données SQL sur l'hébergement partagé

Je dois noter que même si je suis assez à l'aise avec l'écriture de requêtes complexes pour gérer les données, j'ai très peu d'expérience dans la modification de la structure de base de données sans interface graphique.

Je peux accéder à la base de données distante dans l'explorateur de base de données Visual Studio, mais je ne peux pas l'utiliser pour autre chose que la manipulation de données. J'ai installé Sql Management Studio express la nuit dernière et après 40+ crashs j'ai abandonné - je ne pouvais même pas réparer ce fichu truc.

Le serveur distant est SQL 2005/L'interface Web MyLittleAdmin est disponible. Donc, ma question est de savoir quelle est la meilleure façon d'accomplir ces changements. Y a-t-il une interface graphique que je peux utiliser sur le serveur distant? Sinon, y a-t-il un moyen facile de copier la base de données sur mon ordinateur local, de la réparer et de la télécharger à nouveau? Enfin, si aucun des éléments ci-dessus n'est viable, est-ce que quelqu'un a des liens vers une information décente sur la fixation de l'intégrité référentielle via une requête?

Désolé pour la question un peu générale - je me sens comme je fais beaucoup plus difficile que cela devrait être, mais après avoir cherché/essayé toute la nuit je n'ai pas obtenu n'importe où. Merci d'avance pour l'aide. J'apprécie vraiment cela.

... Aussi quelqu'un at-il une machine à voyager dans le temps que je peux emprunter - j'ai besoin d'aller me botter le cul pour cela.

+0

Eh bien, il peut être judicieux de cloner votre base de données actuelle et de tester d'abord les modifications séparément. En ce qui concerne la machine à voyager dans le temps, il ya toujours http://en.wikipedia.org/how_to_build_a_time_machine –

+0

Ce lien va vers une page wikipedia supprimée. –

Répondre

2

Habituellement, les fournisseurs d'hébergement vous permettent de sauvegarder et de restaurer votre base de données, la manière la plus simple de réaliser le déplacement est de sauvegarder votre base de données, de télécharger le fichier de sauvegarde, de le restaurer localement, de faire une sauvegarde. db local, le télécharger, puis le restaurer dans le service en direct. Votre site doit être placé sur un arrêt administratif pendant cette période afin qu'il ne continue pas à mettre à jour les données pendant que vous effectuez ces opérations. Vous devez vous assurer que votre instance SQL locale est exactement à la même version de construction (@@ version) que le fournisseur d'hébergement, sinon votre SQL local peut mettre à jour la structure de la base de données et vous ne pourrez pas la restaurer sur le fournisseur d'hébergement. ou vous ne pourrez pas restaurer sur votre serveur local si votre version est antérieure à celle de l'hôte). Le MSDN BOL a un guid détaillé sur la façon de Copy Databases using Backup/Restore. Une alternative à la sauvegarde/restauration est de detach/attach la base de données, mais je ne le recommande pas car vous devez synchroniser le MDF et le LDF, et ils sont également plus volumineux qu'une sauvegarde.

Cela suppose que vous pouvez faire tous les changements de schéma sur votre copie locale d'une manière magique, c'est-à-dire. rapide et correct. Bien sûr, ce n'est pas facile. La méthode recommandée est de préparer à temps un script qui applique toutes les transformations nécessaires pour atteindre le nouveau schéma. Il existe des outils comme SQL Diff, SQL Compare, SQL Delta et d'autres qui peuvent générer un tel script. Visual Studio Database Edition peut également faire cela.

Comment je referais ce serait comme ceci:

  1. Assurez-vous que j'ai exactement le même schéma sur ma machine dev comme sur l'hôte en direct. Si je ne suis pas sûr, je peux faire une sauvegarde du serveur live et le restaurer localement. Ce serait ma référence, v1. schéma.
  2. Conserver la sauvegarde de la version 1.pour référence
  3. Commencez à développer un script qui modifie le schéma pour ma cible. Parfois, j'ai besoin de rafraîchir ma mémoire sur la syntaxe du script, et ce que je fais, c'est d'aller dans les assistants de SQL Server Management Studio pour l'opération que je veux faire, sélectionner toutes les options dans l'interface utilisateur, puis sélectionner les options du script. , cela me montrera exactement le script que SSMS exécute pour accomplir le changement désiré.
  4. Pour chaque modification que j'ajoute au script, je peux le tester en restaurant la v1. sauvegarde de référence que j'ai à l'étape 1 et l'exécution du script.
  5. Continuez l'itération sur le script, en ajoutant une modification à la fois, jusqu'à ce que toutes les modifications de schéma nécessaires soient effectuées. Après chaque modification, je peux le tester de nouveau comme à l'étape 4.
  6. Yourscript ne doit pas seulement modifier le DDL du schéma, mais aussi tous les changements DML nécessaires (modification des données de référence, modification des valeurs, déplacement des colonnes entre les tabels, etc.).
  7. Lorsque le script est prêt, je peux télécharger une sauvegarde plus récente, appliquer le script et télécharger la sauvegarde mise à jour et la restaurer sur l'hôte actif. Alternativement, vous pouvez simplement exécuter le script sur l'hôte en direct (après, bien sûr, vous l'avez sauvegardé au cas où quelque chose se passe horriblement mal).

Dans mes projets, je me base toujours sur des scripts pour déployer et mettre à niveau la base de données. En fait, j'utilise les propriétés étendues de la base de données pour stocker une «version» du schéma déployé de mon application et dans mon code je fais simplement rouler tous les scripts qui amènent le schéma à ma dernière version. J'ai un article sur mon blog décrivant cette technique: Version Control and your Database.

+0

Merci beaucoup pour toutes les infos! C'est exactement ce dont j'avais besoin. –

Questions connexes