Je travaille avec SQL Server depuis et vers SQL Server 6.5, le vieux conseil qui me retient toujours de ne pas faire de mise à niveau sur place.
Je suis en train de mettre à niveau mes systèmes R2 DEV et TEST 2008 vers SQL Server 2012 et je dois utiliser le même matériel. L'idée de ne pas avoir à restaurer la configuration de mes services de génération de rapports est très attrayante et je suis vraiment à la hauteur. Il n’existe aucun service d’analyse impliqué, ni quelque chose d’inhabituel ou de non standard: seuls le moteur de base de données et les services de reporting sont installés.
Quelqu'un at-il rencontré des problèmes graves avec les mises à niveau sur place? Ou devrais-je réévaluer ma position sur les mises à niveau sur place?
sql-server
sql-server-2012
migration
upgrade
ssrs
Marchandises endommagées
la source
la source
Réponses:
Réponse vraiment courte - En place, c'est bien. Vous pouvez ensuite revoir votre configuration et mettre en œuvre les meilleures pratiques pour SQL Server 2012.
Une réponse plus longue sur les mises à niveau / migrations SQL Server
Il s’agit donc d’une question d’opinion et il n’ya pas forcément de bonne ou de mauvaise réponse, mais je préfère les mises à niveau de migration par rapport aux systèmes en place pour de nombreuses raisons. Cela dit, certains de mes clients, pour diverses raisons, n’ont eu d’autre choix que de procéder à une installation sur place et, en réalité, depuis SQL Server 2005, les mises à niveau sur place n’ont plus été aussi mauvaises qu’avant.
Pourquoi je préfère une migration à une mise à niveau sur place
Remarquez que je ne dis pas que vous devez faire cela en tant que migration. Le service sur place fonctionne bien si vous ne prévoyez pas acheter le nouveau matériel dans votre budget et que vous ne pouvez pas le faire pour cette mise à niveau. Le support dans le processus de mise à niveau est tellement meilleur qu’il ne l’était dans les 6.5 jours, vous ne vous mettez donc pas dans une mauvaise position.
Si vous envisagez de créer sur place pour dev / test, mais que vous souhaitez effectuer une migration pour la production, vous pouvez envisager d'effectuer au moins une migration avant la production. De cette façon, vous pouvez préparer votre liste de contrôle à l’avance et régler tout problème potentiel auquel vous ne pensiez pas.
Attach / Detach vs. Sauvegarde / Restauration pour les migrations
Si vous décidez d'adopter l'approche de la migration, il reste encore une décision sur laquelle vous pouvez encore avoir un débat et c'est la façon dont vous déplacez votre base de données vers le nouvel environnement. Vous pouvez soit détacher votre base de données de l'ancien serveur et la relier au nouveau ou la sauvegarder et la restaurer à cet emplacement.
Je préfère la sauvegarde / restauration. Le plus gros avantage que j'entends parler de détachement / attachement est le gain de temps. Pour moi, la sauvegarde / restauration gagne pour plusieurs raisons:
Si vous décidez d'effectuer la sauvegarde / restauration, cela signifie que votre ancienne base de données source sera toujours en ligne. J'aime mettre cette base de données hors ligne après la sauvegarde. Parfois, je vais encore plus loin et je mets l'ensemble de l'instance SQL hors ligne après que j'ai écrit la sécurité, les travaux, le serveur lié, les certificats, les paramètres de messagerie de la base de données et d'autres informations relatives à l'instance. Cela évite un problème pendant les tests où quelqu'un dit "Tout va bien!" seulement un jour ou deux plus tard, ils réalisent qu'ils ont parlé à l'ancienne base de données sur l'ancien serveur. Mettre ces bases de données hors ligne ou l'ensemble de l'instance hors ligne vous permet d'éviter ces faux positifs et les dégâts qu'ils causent.
Comment rendre l'approche de migration plus rapide
Vous pouvez réduire le temps d'arrêt requis pour passer d'un ancien environnement à un autre dans un environnement de production chargé avec un temps d'indisponibilité réduit en utilisant le modèle de récupération complète. Fondamentalement - mettez en scène l’environnement dans lequel vous migrez en restaurant la dernière sauvegarde complète, toutes les sauvegardes différentielles et toutes les sauvegardes de journal déjà effectuées en spécifiant
NORECOVERY
- il vous suffira ensuite de restaurer les sauvegardes de journal non encore restaurées et la sauvegarde finale du journal que vous souhaitez restaurer en spécifiantWITH RECOVERY
. Ainsi, pour une base de données volumineuse, il est possible de réduire considérablement la fenêtre d'indisponibilité de la commutation en prenant en charge le coût de la restauration complète, différentielle et de la plupart des journaux avant la fenêtre d'indisponibilité. Merci à Tao de l' avoir signalé dans les commentaires!Comment rendre la mise à niveau sur place plus sûre
Quelques choses que vous pouvez faire pour améliorer votre expérience et vos résultats lors du choix de l'approche sur place.
L'importance des listes de contrôle de mise à niveau ou de migration
Si vous décidez d'effectuer une mise à niveau (en place ou de migration), vous devez sérieusement envisager de créer une liste de contrôle et de l'utiliser dans chaque environnement. Vous devriez inclure un tas d'éléments dans cette liste de contrôle, notamment:
Et ensuite, demandez à la personne qui effectuera la mise à niveau de la production de suivre la liste de contrôle dans un environnement autre que celui de la production - en particulier celui qui se ferme ressemble si possible à la production ("South of prod", comme je le dis ...) et notez tout problème ou tout point où ils ont dû se détourner de la liste de contrôle ou improviser à cause d’un manque dans la liste de contrôle. Ensuite, fusionnez les modifications et amusez-vous avec votre modification de la production.
Je ne saurais trop insister sur l’importance de tester suffisamment la post-migration ou la mise à niveau et suffisamment avant votre migration. Prendre une décision de restauration au milieu d'une mise à niveau devrait être facile, en particulier lors d'une migration. S'il y a quelque chose d'inconfort, revenez en arrière et déterminez si vous ne pouvez pas le résoudre efficacement et de manière fiable dans le feu de la migration. Une fois que vous êtes connecté à ce nouvel environnement et que les utilisateurs se connectent, la restauration devient une tâche difficile. Vous ne pouvez pas restaurer une base de données SQL Server vers une version antérieure. Cela signifie un travail manuel et des migrations de données. J'attends toujours quelques semaines pour éliminer l'ancien environnement, mais vous devez faire tout ce qui est en votre pouvoir pour ne pas avoir besoin de cet environnement en trouvant tous vos problèmes avant que vos utilisateurs ne touchent jamais le nouvel environnement. De préférence avant même de lancer la mise à niveau / migration.
Remarque rapide sur la migration / mise à niveau de SQL Server Reporting Services La migration d' une installation SSRS n'est pas une tâche herculéenne comme beaucoup le pensent. Cet article en ligne de technet / books est en fait assez pratique . L'un des avertissements les plus importants de cet article est "Sauvegardez les clés de cryptage", en particulier si vous avez beaucoup d'informations confidentielles enregistrées, telles que les adresses électroniques des destinataires d'e-mails avec rapport programmé, les informations de connexion pour une multitude de connexions, etc. peut demander à un de mes clients de temps en temps à quel point c'est important. Ils le savent parce que j'ai raté cette étape et passé beaucoup de temps à modifier les plannings de rapports et les autorisations de chaîne de connexion.
la source
D'après mon expérience, le même processus de prise de décision devrait être pris comme avant. Autant que je sache, il n'y a pas eu de «monde changeant» avec l'installation de SQL Server, dans le produit MS SQL Server en lui-même, et les problèmes potentiels que vous rencontrez lorsque vous déployez un logiciel avec des millions de lignes de code. Quelque chose de mauvais pourrait arriver et maintenant vous êtes bloqué sans option 'ROLLBACK'.
Vous avez cependant d'autres alternatives en place. Vous pouvez envisager de créer un instantané du système, de le restaurer ailleurs, d'effectuer la mise à niveau et de voir ce qui se passe. Ce test devrait vous apporter beaucoup de confort, mais il ne garantit pas absolument qu'aucun problème ne se produira sur le boîtier de commande. Cependant, il s'agit d'une option qui n'était pas disponible dans SQL 6.5 jours.
Je supposerais juste le pire des cas. Vous effectuez une mise à niveau sur place et elle échoue lamentablement. Vous devez ensuite récupérer cela dans votre RTO et votre RCO. L'entreprise comprend-elle les risques et avez-vous des plans en place pour les atténuer?
Si cela ne vous convient pas, alors ne le faites pas, ce serait mon conseil.
la source
Si vos serveurs s'exécutent dans un environnement virtuel, vous pouvez effectuer une capture instantanée sur un clone, puis appliquer la mise à niveau sur place et tester l'instance pour vérifier que la mise à niveau a abouti. Si cela fonctionne, vous pouvez appliquer l'instantané et rendre le serveur de production cloné. Si cela se passe mal, vous pouvez supprimer l'instantané et revenir à l'image de pré-mise à niveau pour réessayer, ou supprimer le clone et effectuer une migration complète.
la source
En raison d'un investissement matériel important, nous avons dû mettre à niveau uniquement le système d'exploitation tout en conservant la version actuelle de SQL Server (2012, 3 serveurs, 22 instances, ~ 300 bases de données). Aucune configuration complexe comme la mise en miroir, etc.
Cet exemple ne correspond pas exactement à la question, car SQL Server n'est pas en cours de mise à niveau. Je pense que cela reste une bonne réponse car les étapes indiquées seraient en réalité plus simples qu'une migration en place.
Vue d'ensemble: Un lecteur externe a été connecté pour effectuer des sauvegardes complètes principalement par mesure de précaution. Seuls le modèle et msdb seront réellement restaurés à partir du lecteur externe. Les ldf / mdf ont été laissés en place pour le détachement / l’attachement. Certains comptes locaux ont été référencés dans les bases de données. Une fois qu'ils ont été recréés dans le système d'exploitation, les références de la base de données ont été recréées (car les identificateurs de sécurité peuvent changer).
Ensuite, voici les étapes qui ont fonctionné pour nous:
1) Prenez note des paramètres de niveau serveur qui seront restaurés aux étapes 12 (Rôles du serveur) et 18 à 23.
2) Corrigez SQL Server 2012 vers SP3 (cohérence nécessaire pour restaurer les fichiers système).
3) Vérifiez que les versions correspondent sur chaque instance. "Sélectionnez @@ version"
4) Générez ces 6 scripts en exécutant ce script. Redgate SQL Multiscript est un gain de temps considérable s’il ya plusieurs instances (réglez les outils -> Options => longueur de ligne au maximum (8192), puis utilisez la sortie texte).
Relier les utilisateurs aux connexions
5) Exécutez le script pour sauvegarder tous les DB, y compris le système (maître, msdb, modèle) sur un lecteur externe.
6) Exécuter le script pour détacher toutes les bases de données
7) Le lecteur C sera reformaté. Conservez les LDF / MDF s'ils n'étaient PAS sur C.
8) Windows Server 2012 est installé sur C
9) Déplacez le fichier LDF / MDF des fichiers système originaux hors du chemin s’ils ne se trouvaient pas sur le lecteur C.
10) SQL Server 2012 sera réinstallé et corrigé vers le SP3 a. Recréer des comptes utilisateur / groupe du système
11) Sauvegardez les bases de données système dans un nouvel emplacement ou un nouveau nom de fichier (veillez à ne pas écraser les originaux!).
12) Exécutez le fragment de rôles recréé. Quelque chose comme:
13) Exécuter le script de connexion de recréation (ne fait rien si les connexions ont été restaurées)
14) Arrêtez SQL AGENT.
(Pourrait restaurer le Maître ici, nous nous sommes dégonflés).
15) Attachez mdf / ldf en utilisant le script ci-dessus. une. En cas d'échec, restaurer manuellement à partir de bak à l'aide du script ci-dessus.
16) Tentative de restauration du modèle
17) Assurez-vous que SQL Agent est arrêté. Restaurer MSDB (lien) a. En cas d'échec, nécessité de recréer des travaux + plan de maintenance + configuration de la messagerie + opérateurs
18) Ouvrir le script User To Login ...
19) activez Service Broker pour qu'il corresponde à la valeur d'origine SELECT nom, is_broker_enabled FROM sys.databases;
20) Démarrer l'agent SQL
21) Définir le seuil de parallélisme à la valeur d'origine
22) Ajustez les paramètres de base de données à leurs valeurs d'origine:
23) Vérifiez la propriété du travail:
Si la version de SQL Server avait également été mise à niveau, je ne pense pas que le modèle et les bases de données msdb auraient pu être restaurés. Des travaux auraient donc été perdus en raison de https://support.microsoft.com/en-us/kb/264474.
Ce qui manque
la source
Rien ne va pas avec l'une ou l'autre approche en soi - j'ai fait les deux et les deux résultats sont généralement bons.
S'il y a un problème avec l'approche de migration, ce n'est pas technique: c'est de la paresse. Trop souvent, je trouve que la raison pour laquelle une entreprise n’a pas encore complètement adopté la version xxxx est qu’elle a choisi une migration de migration et qu’elle n’a jamais eu la possibilité de faire le travail difficile qui s’imposait. Maintenant, ils ont deux ou plusieurs ensembles de serveurs au lieu d'un.
la source