Migration de SQL Server 2000 vers 2012 sans instance 2005 ou 2008

11

J'ai rencontré trois anciennes bases de données reposant sur SQL Server 2000 que je dois déplacer en 2012. Je pense que l'approche standard consiste à restaurer dans une instance 2005 ou 2008, à mettre à jour, à réexporter et enfin à restaurer en 2012.

Très bien, sauf que nous n'avons aucune instance disponible en 2005 ou 2008.

Existe-t-il des solutions de contournement ou d'autres méthodes qui pourraient valoir la peine d'être essayées?

Pour information, les bases de données ne contiennent que 15 à 20 tables et quelques vues, elles semblent très simples et les sauvegardes ne font que 100 à 200 Mo.

Lunatik
la source
1
Étant donné que votre base de données est petite, vous pouvez créer un script pour la totalité de la base de données - schéma uniquement (pas de données - à l'aide de PowerShell ou SSMS), puis utiliser bcp OUT et l'insertion en bloc . Une fois que vous avez terminé de migrer les données, vous pouvez suivre les meilleures pratiques décrites dans cette réponse
Kin Shah
1
il est parfaitement légal et couvert par la licence de sql pour installer une instance intermédiaire en tant que «pont» à mettre à niveau. aucun utilisateur ne doit s'y connecter. ...
Rostol

Réponses:

21

Non, il n'y a pas de solution pour mettre à niveau une base de données directement de 2000 à 2012.

Comme vous n'avez pas une tonne de données, vous pouvez faire toutes sortes de choses pour déplacer les données (mais pas la base de données dans son ensemble), y compris:

  • Assistant d'importation / exportation
  • SSIS
  • BCP
  • Requêtes manuelles utilisant un serveur lié depuis 2012 ou une application

Cependant, ceux-ci n'apporteront pas nécessairement d'autres choses comme les utilisateurs, les autorisations, les rôles, etc. Et tout ne créera pas vos objets dans le bon ordre de dépendance. Ils sont donc plus productifs et sujets aux erreurs. D'après mon expérience, il serait utile de simplement mettre en place une instance intermédiaire temporairement, puis de faire deux opérations de sauvegarde + restauration - qui seront plus faciles, plus rapides et moins sujettes aux erreurs que l'une des méthodes ci-dessus.

Si vos bases de données sont inférieures à 10 Go, vous pouvez installer une copie d'Express (gratuite) en quelques minutes et l'utiliser. Vous pouvez télécharger 2008 R2 Express ici . Je ne pense pas qu'il existe des fonctionnalités d'entreprise en 2000 autour de la structure de la base de données, etc. qui bloqueraient cette mise à niveau (une préoccupation plus importante pour les versions plus modernes).

Si votre base de données est trop volumineuse pour Express, vous devriez pouvoir trouver Developer Edition pour environ 49 $ (ou même moins cher - j'ai trouvé 2005 sur eBay pour 37 $ ), ou si vous avez un abonnement MSDN, vous devriez pouvoir en obtenir SKU à partir de là.

Ou vous pouvez vous en sortir en utilisant une édition d'évaluation, qui est étonnamment toujours proposée au téléchargement pour les anciennes versions (par exemple, j'ai trouvé 2008 ici ), mais je suis sur un téléphone et je n'ai donc pas pu confirmer que le téléchargement pour cette version fonctionne toujours .

Aaron Bertrand
la source
Merci. Comme la vitesse d'Internet ici est faible, j'essayais d'éviter les téléchargements, mais j'ai trouvé les binaires d'installation de 2005, donc je suppose que ce sera la méthode la plus rapide.
Lunatik
non, le seul vraiment utile est 2008 sinon vous aurez également besoin de 2010 à partir de 2005
Rostol
Êtes-vous sûr de @Rostol? sqlskills.com/blogs/paul/…
Adam Nofsinger
@AdamNofsinger j'allais dire à 100% sûr, je l'ai fait un gajillion de fois (nous avons un ancien SQL 2000 utilisé par un ancien système) et j'ai construit un vm 2008 spécialement pour restaurer les données d'abord, puis sauvegarder et restaurer vers SQL 2016 ... Mais si Paul Randal dit le contraire ... mais gardez à l'esprit que la méthode directe fonctionne à partir de 2005+. pas pour 2000 et 2003 d'affilée.
Rostol
6

Dire qu'il n'y a pas de solution de contournement semble un peu prématuré.

Vous dites que votre base de données ne contient que quelques tables et vues. Pourquoi ne pas exporter le schéma des tables et des vues en tant qu'instructions de création SQL et les exécuter sur votre base de données cible? Vous pouvez ensuite également exporter les données réelles au format CSV et les importer dans la base de données cible, ou peut-être même écrire quelque chose en C # / C ++ / etc pour exporter / importer les données réelles.

Vous n'auriez pas besoin de dépenser un centime pour de nouvelles instances de SQL Server dont vous n'avez finalement pas besoin.

Nicholas Hill
la source
3
Et inclure tous les autres objets, procédures stockées, déclencheurs, fonctions, etc. bien sûr. De même, il existe l'utilitaire BCP pour copier des données depuis et vers une base de données.
RLF
1
Merci. C'est le genre de chose que j'espérais peut-être, mais la lutte contre les bases de données n'est pas mon travail de jour et je ne suis pas trop sûr s'il existe d'autres dépendances ou paramètres (autorisations utilisateur, etc.) qui ne seraient pas copiés si je vient d'exporter les tables, etc.
Lunatik
4
Assez juste, mis à jour ma réponse. Toujours penser qu'une solution de contournement est beaucoup plus de travail que la simple mise en place temporaire d'une instance et l'exécution de deux opérations de sauvegarde + restauration fiables et sans risque d'erreur. (En outre, cela ne semble pas être une question d' argent , car l'OP a déjà 2005 binaires et une base de données aussi petite devrait pouvoir être migrée de toute façon à l'aide de SQL Express.)
Aaron Bertrand
3

Non, vous ne pouvez pas le migrer directement de 2000 à 2012.

Ce que vous pouvez faire est d'installer une instance temporaire de 2005 OU 2008 ou 2008R2, restaurez la base de données 2000 ici. Une fois cela fait, vous pouvez maintenant mettre à niveau à partir de l'instance installée en effectuant la sauvegarde de la base de données de cette instance et en la restaurant sur SQL Server 2012.

Vous devrez effectuer la migration en deux étapes:

  • Étape 1: effectuez une première migration de SQL 2000 vers SQL 2008 par exemple. Vous devez être SQL 2000 SP4, puis procédez comme suit: Migration de SQL Server 2000 vers SQL Server 2008

  • Étape 2: effectuez une deuxième migration de SQL Server 2008 vers 2012.

KASQLDBA
la source
0

Vous dites que vous "avez rencontré trois anciennes bases de données reposant sur SQL Server 2000", ce qui m'amène à croire que vous n'avez besoin que des données. Je suppose que s'ils étaient dirigés dans un but, vous le sauriez. Si tel est le cas, ignorez toutes les questions des utilisateurs, de la sécurité, etc.

Assistant d'importation / exportation de toutes les tables Scriptez les procédures stockées et les vues Vérifiez les plans de maintenance et les tâches d'agent simplement pour documenter les processus que vous voudrez peut-être regarder plus tard.

Mitch Stein
la source
0

Vous ne pouvez pas migrer directement de SQL Server 2000 vers SQL Server 2012, et si vous essayez de le faire, vous obtiendrez le numéro d'erreur suivant 3169, lié aux problèmes de compatibilité.

La migration vers SQL Server 2012 peut être effectuée à partir de l'une des versions suivantes (versions minimales) SQL Server 2005 SP4 ou SQL Server 2008 SP2 ou SQL Server 2008 R2 SP1.

Donc, la première étape pour migrer de SQL Server 2000 vers l'une de ces versions, j'ai trouvé l'un des Conseiller de mise à niveau pour SQL Server 2008 dans le lien suivant . Pour vous assurer que tout fonctionnera correctement avant de commencer le processus de restauration, vous devez exécuter l'application. Ensuite, "Lancer l'assistant d'analyse de l'assistant de mise à niveau" et suivez les étapes de l'assistant.

Après avoir obtenu le rapport, vous devez restaurer la base de données sur le serveur cible SQL Server 2005 SP4 ou SQL Server 2008 SP2 ou SQL Server 2008 R2 SP1 et exécuter le niveau de compatibilité sur celui-ci (vous pouvez le trouver sur l'option de base de données). Pour les connexions SQL Server, veuillez suivre les instructions du lien suivant .

Une fois cette opération terminée, vous devez maintenant migrer vers SQL Server 2012 en répétant les mêmes étapes à partir du serveur vers lequel vous avez effectué la première migration.

Ahmad Abuhasna
la source
0

Tout d'abord, je conviens que vous ne devez pas migrer directement de 2000 à 2012. Je pense que ce processus a été bien couvert. Je voulais vous suggérer de savoir avec certitude si quelqu'un utilise les bases de données et pourquoi il les utilise. Il se peut qu'ils ne soient pas utilisés. Cela arrive et si c'est le cas, vous n'avez aucun souci. Il se peut que l'ajout de 2 ou 3 tables et des données (pour 2000, utilisez bcp si vous souhaitez extraire les données d'une table individuelle de manière simple et fiable) dans une base de données 2012 existante répondrait aux besoins des utilisateurs. Si vous faites cela, créez les nouvelles tables dans une base de données 2012 et bcp les données dont vous avez besoin pour csv, vous pouvez les rentrer si vous le souhaitez. Si vous devez migrer plus d'une table ou deux, la méthode la plus simple, la plus sûre et la meilleure consiste à effectuer la migration en deux étapes. Don'

dkh63493
la source
Vous devez savoir que les scripts de schéma de 2000 n'étaient pas précis à 100%. Je me souviens avoir toujours dû éditer le script.
dkh63493