Comment télécharger des bases de données SQL Server dans des environnements d'hébergement partagés?

StackOverflow https://stackoverflow.com/questions/245252

  •  05-07-2019
  •  | 
  •  

Question

Nous rencontrons le problème commun de déplacer notre base de données de développement SQL 2005 vers des serveurs Web partagés chez des sociétés d'hébergement de sites Web.

Idéalement, nous souhaiterions un système qui transfère la structure de la base de données et les données sous forme de réplique exacte.

Ceci serait généralement réalisé en restaurant une sauvegarde. Mais comme ce sont des serveurs SQL partagés, nous ne pouvons pas restaurer les sauvegardes - nous n’avons pas accès à la machine réelle.

Nous pourrions générer un script pour créer la structure de la base de données, mais nous ne pourrions pas ensuite effectuer de transfert de données via l'élément de menu Tâches / Importer des données, car nous pourrions violer les contraintes de clé étrangère lorsque les tables sont importées dans un ordre, les conflits avec la base de données schéma. De plus, les index peuvent ne pas être répliqués s'ils sont configurés pour générer automatiquement.

Nous nous retrouvons donc avec une opération compliquée:

  1. Créez un script dans SQL 2005 qui génère la base de données au format SQL 2000.
  2. Exécutez le script pour créer une base de données SQL 2000 dans SQL 2000.
  3. Créez un script dans SQL 2000 qui génère la structure de la base de données SANS index ni clés étrangères.
  4. Exécutez ce script sur le serveur de production. Vous avez maintenant une structure de base de données pour télécharger des données.
  5. Utilisez SQL 2005 pour transférer les données sur le serveur de production avec Tâches / Importer des données.
  6. Utilisez SQL 2000 pour générer un script qui crée la base de données avec des index et des clés.
  7. Copiez les commandes qui génèrent uniquement les index et les clés étrangères. Celles-ci sont situées après les commandes de création de table. Remarque: dans SQL 2005, les index et les clés étrangères sont générés comme tels et ne peuvent pas être séparés facilement.
  8. Exécutez ce script sur la base de données de production.

voila! La base de données est téléchargée avec toutes les données et clés / contraintes en place. Quel système désordonné et sujet aux erreurs.

Y a-t-il quelque chose de mieux?

Était-ce utile?

La solution

Autres conseils

Les scripts de génération conviennent parfaitement à la création des objets de base de données, mais pas au transport d'informations de base de données. Par exemple, bases de données spécifiques au client dans lesquelles le développeur doit pré-renseigner certaines données.

L’un des problèmes que j’ai rencontrés à ce sujet concerne les nouveaux types MAX dans SQL Server 2005+. (nvarchar (max), varchar (max), etc.) Bien sûr, c'est pire lorsque vous utilisez réellement SQL Server Express, ce qui ne permet pas l'exportation autrement que la création de vos propres scripts pour créer les données.

Je recommanderais de passer à une société d’hébergement qui vous permette de sauvegarder des fichiers par FTP et qui NE vous oblige PAS à utiliser vos propres scripts. C'est tout l'intérêt de SQL Server, non? Fournir plus d'outils plus conviviaux. Si la société d’hébergement supprime ces informations, vous pouvez également passer à MySql pour faciliter la collecte des informations.

WebHost4Life est une bouée de sauvetage dans cette catégorie. Ils offrent FTP sur le serveur de base de données pour télécharger votre fichier de sauvegarde ou les fichiers MDF et LDF à joindre! J'étais tellement contrarié quand j'ai vu que GoDaddy avait la restriction similaire que vous avez mentionnée. Leur outil ne m'a pas dit que c'était une mauvaise importation, et je ne pouvais pas comprendre pourquoi mon site revenait avec 500 erreurs.

Une autre remarque: je ne suis pas sûr de ce qui est considéré comme plus sûr. J'ai activé les connexions externes dans GoDaddy et connecté à Management Studio, et j'ai pu voir toutes les bases de données sur ce serveur! Je ne pouvais pas y accéder, mais j'ai maintenant cette information. Un double inconvénient est que GoDaddy exige que le nom d'utilisateur de la base de données soit identique à celui de la base de données! Maintenant, tout ce que vous devez faire est de spammer les mots de passe contre ces centaines de DB!

Webhost4life, d’autre part, affiche uniquement votre base de données spécifique dans Management Studio. Et ils vous permettent de choisir votre propre nom de base de données et votre nom d'utilisateur, indépendamment l'un de l'autre. Ils ajoutent uniquement le même identifiant unique à la fin de l'utilisateur & amp; Noms de base de données afin de ne pas les empêcher d'entrer en conflit.

Vous ne devez pas compter sur la restauration de sauvegardes pour copier / transférer des bases de données. Vous devez utiliser des scripts - croyez-moi, vous vous améliorerez.

J'ai utilisé les outils RedGate Compare avec hébergement partagé et cela fonctionne bien.

Les scripts de génération de base de données sont désordonnés, mais ils présentent également plusieurs avantages qui ... rendent la douleur plus tolérable.

Tout d'abord, si vous traitez les scripts de base de données comme de véritables tâches de programmation, vous pouvez encapsuler le désordre. Si vous générez un script une fois (à l'aide d'un outil de base de données), vous pouvez séparer les aspects de la structure de la table des aspects de la contrainte (clés, index, etc.). De même, vous pouvez exporter les données une fois, mais les diviser en "système". données qui ne sont pas fréquemment modifiées mais qui sont nécessaires au bon fonctionnement (éléments tels que les taxes ou les frais d’expédition, etc.), des données «test» facilement identifiables et des données «opérationnelles» qui doivent être déplacées de la version de la base de données Ancienne à la version de la base de données Nouveau ( commandes de la semaine dernière).

Les 3 premières minutes après que vous ayez accompli cela, tout va bien: vous pouvez régénérer une nouvelle base de données avec ou sans données de test en quelques minutes. Malheureusement, après 3 minutes, les bases de données ne sont plus synchronisées, du moins en termes de données, sinon aussi fréquemment en termes de structure.

Personnellement, j'aime bien avoir la structure de chaque table dans un fichier SQL séparé (et ses contraintes en tant que fichier séparé dans un répertoire distinct, et les données de test dans un fichier, les données système dans un autre, etc.). D'une part, cela signifie qu'il faut toucher à plusieurs fichiers lors de la modification, mais d'autre part, il est beaucoup plus facile de voir la granularité de ce qui a été modifié: tout se trouve dans les journaux de contrôle de version. (Je pourrais probablement être convaincu que beaucoup de fichiers est une stratégie erronée ...)

Tout cela est fondé sur l'hypothèse que vous avez une certaine facilité à exécuter un script complexe impliquant de nombreux fichiers et que vous n'êtes pas limité à un panneau de configuration basé sur le Web, ce qui peut être ce que vous décrivez lorsque vous dites " "Nous n'avons pas accès à la machine réelle". Je pense que vous ne pouvez pas développer de logiciels personnalisés sans certains accès au shell sur le serveur; le secteur de l'hébergement est suffisamment concurrentiel pour que vous puissiez certainement trouver un hôte convivial pour les scripts assez facilement.

Vérifiez si la société Webhsoting fournit myLittleBackup . C’est définitivement la solution la plus simple à installer & installer; une base de données du serveur de développement au serveur SQL partagé

Réponse pour les utilisateurs de SQL Server 2008.

J'avais exactement le même problème que l'OP, mais j'utilisais SQL Server 2008 et mon hébergeur partagé est GoDaddy. Voici la solution pour copier DB + les données dans la base de données GoDaddy ...

Dans Visual Studio 2010, accédez à l'Explorateur de serveurs (dans VS Express, je pense que cela s'appelle l'explorateur de bases de données). Cliquez avec le bouton droit de la souris sur la base de données et sélectionnez Publier vers le fournisseur. Ceci ouvre l’assistant de publication de la base de données. Consultez l’assistant pour créer un fichier xxx.sql sur votre ordinateur local.

Ouvrez SQL Server Management Studio et connectez-vous à la base de données GoDaddy (vous devriez déjà l'avoir créé via le panneau de configuration de GoDaddy sur son site Web) ...

Ouvrez l’explorateur Windows, recherchez le fichier xxx.sql et double-cliquez dessus. Le script devrait s'ouvrir dans SSMS. Exécutez le script " dans la base de données appropriée " ... voila, c'est fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top