2016-06-08 1 views
0

J'espère que vous pourrez tous m'aider dans cette situation. Mon patron a créé une nouvelle base de données et il veut plusieurs des anciennes tables dans la nouvelle base de données. Ma question est comment puis-je transférer les données et le schéma de l'ancienne base de données à la nouvelle base de données sans supprimer les tables dans l'ancienne base de données? Voici mes deux bases de données: WTS-SQL-DEV = ceci est l'ancienne base de données : WTS-Business = est la nouvelle base de donnéesTransférer les données et le schéma d'une base de données à l'autre, une table à la fois

Informations complémentaires de commentaire:

je peux accéder à deux bases de données sur la même machine. J'ai trouvé une vidéo sur youtube comment transférer la table et la structure. J'étais manquant les données.

+0

Oh Im exécutant Microsoft SQL Server 2016 – kliebwatchtower

+1

Prenez une sauvegarde complète de l'ancienne db.Copier sur le nouvel ordinateur – jarlh

+0

Si vous avez les deux bases de données sur le même serveur ou au moins sur un serveur lié, l'insertion de données comme celle-ci serait un jeu d'enfant. Faites-nous savoir un peu plus à ce sujet, pouvez-vous accéder aux deux bases de données de la même machine? –

Répondre

0
  1. Faites une sauvegarde de la base de données

enter image description here

enter image description here

  1. Sur la nouvelle machine restaurer la base de données

enter image description here

enter image description here

0

Vous avez mentionné que les 2 bases de données sont sur la même machine, et que vous avez compris comment obtenir le schéma sur

(j'utilise Tasks - Create Scripts du clic droit sur le menu contextuel sur la base de données, et générez les scripts en sélectionnant les tables individuelles, et enregistrez dans la nouvelle fenêtre de requête .. alors c'est aussi simple qu'utiliser Use [new_db] en plus de chaque script créé, et les objets seront créés dans la nouvelle base de données, où [new_db] est votre nouveau nom de base de données.).

Étant donné que les tables ont la même structure, pour insérer les données, une fois que vous créez des tables dans un nouveau DB, il s'agit d'une instruction insert select. Activer identity insert s'il existe (comme il se doit) une colonne de clé primaire générée automatiquement. Insérer les données Puis désactivez identity insert.

-- Note: Identity_Insert is required if there is an identity column present 
-- Otherwise those two lines can be removed/commented out 
Use [new_db] 
Set IDENTITY_INSERT [table_name] On 
Insert Into [table_name] 
-- Note 2: Default schema is [dbo], but technically, it is [db].[schema].[table] 
Select * From [old_db].[dbo].[table_name] 
Set IDENTITY_INSERT [table_name] Off 

assez simple dans votre cas, et pas besoin de sauvegarder/restaurer le db. Si les bases de données se trouvaient sur des serveurs séparés, non liés, une sauvegarde/restauration serait nécessaire afin d'obtenir les anciennes et nouvelles bases de données sur la même machine ... quelque chose que vous avez déjà dans votre cas particulier.

+0

Utiliser [WTS-Business] Définir IDENTITY_INSERT [dbo]. [WTS-Expense-RecurringCharges] Sur Insérer dans [dbo]. [WTS-Expense-RecurringCharges] Sélectionnez * De [WTS-SQL-DEV]. [Dbo ] [WTS-Expense-RecurringCharges] Définir IDENTITY_INSERT [dbo]. [WTS-Expense-RecurringCharges] Désactivé Msg 40515, niveau 15, état 1, ligne 30 Référence à la base de données et/ou nom du serveur dans 'WTS-SQL- DEV.dbo.WTS-Expense-RecurringCharges 'n'est pas pris en charge dans cette version de SQL Server. J'ai essayé de suivre votre exemple c'est ce que je vois quand je l'excelle – kliebwatchtower

+0

@kliebwatchtower Cela semble être une limitation SQL 2016 ('transaction de base de données croisée' quand deux bases de données sont sur la même instance ne sont pas autorisés ... Je pense @ La réponse de JiggsJedi peut être la voie à suivre –

1

Deux excellentes réponses déjà.

Une autre option consiste à cliquer avec le bouton droit sur la base de données, puis aller à Tâches> Exporter des données.

Ceci lancera l'assistant d'importation/exportation. Vous pouvez définir les serveurs/bases de données source/destination et les objets, et tout copier.

https://msdn.microsoft.com/en-us/library/ms140052.aspx

+0

Agréable et facile :) –

+0

J'ai obtenu les données par l'intermédiaire de l'importateur/exportateur. C'était facile. Y at-il un moyen facile d'inclure toutes les choses supplémentaires comme les contraintes et autres? – kliebwatchtower

+0

Ceux-ci auraient probablement besoin d'être scriptés. Cliquez avec le bouton droit sur DB> Tâches> Générer des scripts. Dans "Définir les options de script", cliquez sur Avancé et près du bas, vous pouvez activer les scripts de contraintes/clés/index/triggers/etc. – JiggsJedi