2017-06-08 4 views
0

J'essaie de migrer de Microsoft SQL Server 2003 à SQL Server 2016. L'importation des données s'est bien passé, en utilisant Microsoft SQL Management Studion 2016, mais les vues n'ont pas été importées. Et voici ma demande, comment puis-je importer les vues?Importer des vues de Microsoft SQL Server 2003 échouer

A ce stade, j'ai essayé:

  • Générer un script de création de l'ancienne base de données, mais il semble en 2003, cette option n'a pas existé
  • Faire une requête dans l'ancien serveur SQL lister toutes les vues, les copier et les recréer manuellement dans le nouveau serveur, mais aucune requête n'a fonctionné pour récupérer toutes les vues
  • Copiez le fichier .MDF et.LDF de l'ancien serveur et joignez-les au nouveau serveur, mais J'ai l'erreur suivante:

=

================================== 

Fail to join database for serber « DESKTOP-53C6I45\SQLEXPRESS ». (Microsoft.SqlServer.Smo) 

------------------------------ 
To get help, click on : http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=13.0.16106.4+((SSMS_Rel_16_5).170125-2137)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Attacher+la+base+de+données+Server&LinkId=20476 

------------------------------ 
Software location : 

    at Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files) 
    at Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabaseData.PrimaryFile.Attach() 
    at Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabase.SendDataToServer() 

=================================== 

An exception was produced during the execution of batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo) 

------------------------------ 
Location of the software : 

    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry) 
    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType, Boolean retry) 
    at Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries, Boolean retry) 
    at Microsoft.SqlServer.Management.Smo.Server.AttachDatabaseWorker(String name, StringCollection files, String owner, AttachOptions attachOptions) 
    at Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files) 

=================================== 

The database 'Labeint' can't be upgraded, because its non final version (539) isn't managed by this version of SQL Server. You can't open a database which is incompatible with this version of sqlservr.exe. You must rereate the database. 
Impossible to open the new database 'Labeint'. Abandon of CREATE DATABASE. (.Net SqlClient Data Provider) 

------------------------------ 
To get help, click on : http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=950&LinkId=20476 

------------------------------ 
Server name : DESKTOP-53C6I45\SQLEXPRESS 
Error number : 950 
Gravity : 20 
State: 1 
Line number : 1 


------------------------------ 
Location of the software : 

    at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException) 
    at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry) 

Ce qui est le point de vue sont complexes dans un ancien projet, obtenir des données, je ne sais pas où pour un projet qui est une boîte noire pour moi, sinon je les aurais recréés manuellement, en essayant à comprendre comment ils ont été faits.

+0

Il y avait un Sql Server 2003? Wow, j'ai raté celui-là. Doit avoir été le Kook Kids Sku –

+0

S'il vous plaît voir ma réponse mise à jour ci-dessous –

Répondre

0

Vous ne pouvez pas wholsesale migrer les fichiers de base de données de cette façon. Vous essayez de mettre à niveau une base de données Sql Server 2000 (v539) vers Sql Server 2016 et il n'existe pas de chemin de mise à niveau pour cela. D'un coup, vous devrez probablement passer de 2000 à 2008R2, puis de 2008R2 à 2016 si c'est votre chemin (seulement) choisi.

Une alternative est de télécharger une ancienne version de Red-Gate Sql Compare (v11 ou avant) et de l'exécuter en mode d'évaluation par rapport à une base de données 2016 vide.

https://www.red-gate.com/products/old-versions

+0

Il n'y a donc pas de façons directes d'extraire les vues d'une base de données Sql Server 2000? Je vais essayer Red-Gate et vous tenir au courant. –

+0

Je n'ai pas utilisé Sql Server 2000 il y a simplement _forever_, donc j'ai perdu la trace de ses nombreuses et onéreuses restrictions (par rapport à aujourd'hui). –

+0

J'ai essayé votre solution, et cela a fonctionné. J'ai récupéré le .ldf et le .mdf de Microsoft Server 2003, l'ai attaché dans Microsoft SQL Server 2005 sur une machine virtuelle exécutant Windows XP SP2, sauvegardé les bases de données, et a pu restaurer le .bak sur Microsoft SQL Server 2016. Merci toi! –