J'ai lu BEAUCOUP de publications sur Google et de questions sur StackOverflow sur la restauration d'une base de données dans SQL Server à partir d'un fichier .bak.
Mais aucun d’entre eux n’indique comment lire simplement les tables de la sauvegarde de la base de données. (Aucun que je pourrais trouver de toute façon?)
Je veux juste vérifier quelques anciennes informations qui ont maintenant été supprimées, sans réellement restaurer la base de données complète. Est-ce possible?
.
EDIT:
Je voulais juste poster ma solution T-SQL au problème, afin que d'autres puissent l'utiliser et que je puisse revenir en arrière et le rechercher;)
J'ai d'abord créé une nouvelle base de données appelée backup_lookup
et l’a pris hors ligne. Après cela, je pourrais restaurer mon ancienne base de données mydb
vers la nouvelle, sans jamais toucher à mon original.
USE master
GO
RESTORE DATABASE backup_lookup
FROM DISK = 'D:\backup\mydb.bak'
WITH REPLACE,
MOVE 'mydb' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf',
MOVE 'mydb_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf'
GO
J'espère que ça aide :)
A partir de SQL Server 2008 SSMS (SQL Server Management Studio), simplement:
Non plus:
Clic droit, tâches, restauration, base de données
PS: Encore une fois, je souligne: vous pouvez facilement le faire sur une "base de données scratch" - vous faites pas besoin de remplacer votre base de données actuelle. Mais vous faites avez besoin de [~ # ~] restaurer [~ # ~] .
PPS: Vous pouvez également accomplir la même chose avec les commandes T-SQL, si vous souhaitez le scripter.
La seule solution réalisable consiste à restaurer le .bak
fichier. Le contenu et la structure de ces fichiers sont non documentés et, par conséquent, il n'y a vraiment aucun moyen (autre qu'un piratage horrible) de le faire fonctionner - définitivement ne vaut pas votre temps et l'effort!
Le seul outil que je connaisse qui puisse donner un sens à .bak
fichiers sans les restaurer est Red-Gate SQL Compare Professional (et la comparaison de données SQL qui l'accompagne) qui vous permettent de comparer la structure de votre base de données au contenu d'un .bak
fichier. Les outils Red-Gate sont absolument merveilleux - hautement recommandés et valent bien chaque centime dépensé!
Et je viens de vérifier leur site Web - il semble bien que vous puissiez restaurer une seule table à partir d'un .bak
fichier avec SQL Compare Pro! :-)
Il n'y a pas de moyen standard de le faire. Vous devez utiliser des outils tiers tels que ApexSQL Restore ou SQL Virtual Restore . Ces outils ne lisent pas vraiment le fichier de sauvegarde directement. SQL Server doit "penser" aux fichiers de sauvegarde comme s'il s'agissait de bases de données actives.
Juste pour ajouter ma solution scriptée TSQL:
Tout d'abord; ajouter une nouvelle base de données nommée backup_lookup
. Ensuite, exécutez ce script en insérant le chemin racine et le chemin de fichier de sauvegarde de vos propres bases de données.
USE [master]
GO
RESTORE DATABASE backup_lookup
FROM DISK = 'C:\backup.bak'
WITH REPLACE,
MOVE 'Old Database Name' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup.mdf',
MOVE 'Old Database Name_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\backup_lookup_log.ldf'
GO
Cela ne semble pas possible avec SQL Server 2008 seul. Vous allez avoir besoin de l'aide d'un outil tiers.
Cela vous aidera à faire de votre .bak une base de données dynamique: