Expiration du délai d'expiration lors de l'utilisation de l'assistant de copie de base de données

8

Microsoft m'a fait croire que l'assistant de copie de base de données SQL Server 2012 est le moyen le plus optimal de copier une base de données SQL Server 2000 vers SQL Server 2012. Après quelques heures de difficulté, j'ai pu surmonter certains problèmes et j'ai pu importer de petites des bases de données SQL Server 2000 de taille moyenne dans SQL Server 2012.

Cependant, l'assistant échoue constamment pour une base de données de 30 Go avec ces erreurs:

Message: Une erreur s'est produite lors du transfert des données. Voir l'exception interne pour plus de détails.
StackTrace: sur Microsoft.SqlServer.Management.Smo.Transfer.TransferData ()
sur Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer ()
InnerException -> Délai expiré. Le délai d'expiration s'est écoulé avant la fin de l'opération ou le serveur ne répond pas.
Échec de CREATE DATABASE. Certains noms de fichiers répertoriés n'ont pas pu être créés. Vérifiez les erreurs associées.
StackTrace:
à System.Data.SqlClient.SqlConnection.OnError (exception SqlException, Boolean breakConnection)
à System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
sur System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

J'ai revérifié, ce n'est pas un problème de chemin de fichier, d'autorisation ou d'espace disque. Je pense que l' CREATE DATABASEétape prend environ 2 minutes et que l'assistant suppose que l'opération a expiré. J'ai créé manuellement une base de données vide avec le même chemin de fichier et la même taille de fichier en utilisant SQL, cela a fonctionné. Fait intéressant, une copie de la base de données de 1 Go a échoué avec les mêmes erreurs et a réussi au 2e essai.

Veuillez aider.

Salman A
la source
Veuillez voir la réponse d'Aarons. C'est un moyen beaucoup plus efficace pour votre base de données
Ali Razeghi

Réponses:

7

Un chemin beaucoup plus efficace que de jouer avec cet assistant serait de:

  1. Faites une sauvegarde complète de votre base de données 2000.
  2. Restaurez-le dans une instance SQL 2005, 2008 ou 2008 R2, qui prennent toutes en charge 2000 bases de données. Vous pouvez toujours obtenir l' édition d'évaluation de 2008 R2 ici , si vous n'avez aucune instance applicable en place. Notez qu'Express ne fonctionnera pas car il a une limitation de fichier de données de 4 Go / 10 Go selon la version.
  3. Modifiez le niveau de compatibilité à quelque chose au-dessus de 80 (90 ou 100, selon que vous avez utilisé 2005 ou 2008/2008 R2) en utilisant ALTER DATABASE.
  4. Faites une sauvegarde complète de cette base de données une fois qu'elle n'est plus en mode de compatibilité 80.
  5. Restaurez cette nouvelle sauvegarde sur votre instance SQL Server 2012.
  6. Modifiez le niveau de compatibilité à 110 et mettez à jour les statistiques.
  7. TEST .
Aaron Bertrand
la source
J'ai installé SQL 2012, est-ce OK si j'installe SQL 2008 R2 sur la même machine? L'ordre d'installation est-il important?
Salman A
Oui, vous pouvez installer 2008 R2 sur la même machine, mais pour garder les choses simples, installez simplement le moteur de base de données, aucun outil client et tout ça. Vous pouvez désinstaller l'instance 2008 R2 après avoir déplacé toutes vos bases de données 2000 hors de 2000.
Aaron Bertrand
1
Je déconseille d'installer des versions dont vous n'avez pas besoin sur les machines de production, mais non, cela n'interfère pas, mais vous pourriez recevoir des avertissements sur les composants partagés. En règle générale, n'installez jamais sur une prod quelque chose dont vous n'avez pas besoin. Il augmente la surface de sécurité pour les attaques, introduit des bogues et augmente la gestion.
Ali Razeghi
1
@Ali comment savez-vous que la machine dont parle Salman est une machine de production? Ou que ce n'est pas la seule machine disponible?
Aaron Bertrand
C'est pourquoi j'ai spécifié 'on prod' au lieu de simplement 'ne le fais pas' et j'ai répondu 'mais non ça n'interfère pas'. En ce qui concerne la seule machine disponible, vous pouvez même les installer sur les ordinateurs de bureau et sa base de données est de 30 Go comme indiqué. Les ordinateurs avec 30 Go de stockage gratuit sont assez courants, mais encore une fois, ce ne sont que des conseils, pas difficile «c'est la seule réponse». J'ai regardé son blog et il est très concentré sur le développement, ce qui signifie qu'il est fort probable qu'il ne s'implique pas autant dans les meilleures pratiques des opérations qu'un gars des opérations. Je pense que c'est un bon conseil, je suis surpris du nombre de personnes qui se lancent dans la prod alors qu'elles n'ont pas à le faire.
Ali Razeghi