"Aucun jeu de sauvegarde sélectionné pour être restauré" SQL Server 2012

150

J'ai une base de données SQL Server 2012 avec filestream activé. Cependant, lorsque je le sauvegarde et que je tente de le restaurer sur une autre instance de SQL Server 2012 (sur une autre machine), je reçois simplement ce message:

Aucun jeu de sauvegarde sélectionné pour être restauré.

Pas même une seule ligne d'explication supplémentaire. Quel est le problème ici?

Toutes les autres bases de données sans flux de fichiers sont correctes et peuvent être restaurées avec succès. Est-ce quelque chose lié à filestream? Dois-je installer un correctif ou quelque chose comme ça.

Saeed Neamati
la source
1
Cela ne l'a pas encore résolu. Semble que la configuration de SQL Server a des problèmes. Je pense que les choses devraient être plus faciles que cela.
Saeed Neamati
1
Pouvez-vous fournir le T-SQL que vous utilisez pour tenter la restauration?
Ben Thul
3
Eh bien, j'utilise l'interface graphique de SSMS.
Saeed Neamati
Même en procédant de cette façon, il devrait y avoir un bouton "script" quelque part près du haut de la fenêtre. Une fois que vous avez tout configuré comme vous le pensez, il serait défini pour la restauration, cliquez dessus au lieu de "ok" et cela affichera le T-SQL qui serait exécuté sur le serveur pour la restauration.
Ben Thul
1
C'était aussi un problème d'autorisations pour moi avec SQL 2014 Standard (autonome) sur WS 2012 R2 (groupes de travail), mais j'ai dû redémarrer deux fois pour que les autorisations soient prises. Pour ce que ça vaut ... J'espère que vous serez tous résolus aussi.
BaldEagle

Réponses:

177

J'ai eu ce problème et il s'est avéré que j'essayais de restaurer la mauvaise version de SQL. Si vous souhaitez plus d'informations sur ce qui se passe, essayez de restaurer la base de données à l'aide du SQL suivant:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Cela devrait vous donner le message d'erreur dont vous avez besoin pour déboguer cela.

user489998
la source
Quel message d'erreur obtenez-vous lorsque vous essayez la restauration à l'aide du SQL ci-dessus?
user489998
Il semble que la restauration de la base de données à l'aide du script T-SQL ferait le travail. Je pense que parce que nous n'avons pas sauvegardé les données de flux de fichiers, l'interface utilisateur ne peut pas les gérer.
Saeed Neamati
1
Bien, j'aime l'approche SQL brute. Je reçois un message du type «Le jeu de médias a 2 familles de médias mais une seule est fournie. Tous les membres doivent être fournis. »- cela signifie-t-il que la source de sauvegarde était une version de SQL Server différente de la cible de sauvegarde? Lorsque j'essaye avec l'approche UI ("Restore"), je reçois le message @ topNo backupset selected to be restored.
The Red Pea
Si vous souhaitez remplacer complètement la base de données existante, utilisez l' option WITH REPLACERESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes
63

Mon problème a fini par être les autorisations . Je suis sur une machine de développement et copié via Homegroup. D'une manière ou d'une autre, probablement en fonction de l'endroit où j'ai copié le fichier, les autorisations ont été perturbées et Management Studio n'a pas pu lire le fichier. Comme il s'agit de dev, j'ai simplement donné à tout le monde les autorisations sur le fichier bak et j'ai pu restaurer avec succès via l'interface graphique.

Tyler Forsythe
la source
Cela a aussi fonctionné pour moi. C'est tellement stupide que mon nom d'utilisateur peut avoir des autorisations sur ce dossier, mais le seul moyen de faire fonctionner cela était d'ajouter le groupe "Tout le monde" aux autorisations sur le dossier. Tellement frustrant, mais merci de m'avoir fait gagner du temps!
hurleystylee
5
Absence totale de messages d'erreur utiles dans ce cas. Mon problème a également été résolu par cela.
dodgy_coder
1
Booya! Je dois aimer ces erreurs génériques qui ne vous disent rien. Bien sûr, c'était des autorisations. Cela m'est arrivé lors de la restauration à partir de serveurs SQL sur différents domaines. Modification de l'autorisation du fichier .bak pour tout le monde. A bien fonctionné après cela.
Prescient le
Avait rencontré les mêmes problèmes lors de la tentative de restauration de la base de données à partir d'un .bakfichier, qui a été créé par le service Web de téléchargement de fichiers, qui s'exécute sous IISApplicationPoolIdentity
apdevelop
26

Lors de l'exécution:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

Cela m'a donné l'erreur suivante:

La famille de supports sur le périphérique «C: \ NorthwindDB.bak» est mal formée. SQL Server ne peut pas traiter cette famille de supports. RESTORE HEADERONLY se termine anormalement. (Microsoft SQL Server, Erreur: 3241) Blockquote

Il s'avère que vous ne pouvez pas faire passer une base de données d'une version SQL supérieure à une version inférieure, même si le niveau de compatibilité est le même sur les bases de données source et de destination. Pour vérifier la version SQL, exécutez:

Select @@Version

Pour voir la différence, créez simplement une base de données sur votre serveur SQL source et essayez de faire une restauration à partir de votre fichier de sauvegarde. ouvrez-le à partir d'un serveur de version inférieure qui dira simplement "aucun jeu de sauvegarde sélectionné à restaurer" entrez la description de l'image ici

Donc, si vous devez toujours déplacer vos données vers une version SQL inférieure, cochez ceci .

Alon Or
la source
Donc, si je prends une sauvegarde de base de données à partir d'une machine avec SQL Server 2014 Enterprise - peut-elle être restaurée sur SQL Server 2014 Express?
chester89
@ chester89 Je pense que cela dépend du type de fonctionnalité que vous avez dans la base de données. Et le genre de sauvegarde. La version express ne reconnaît pas les sauvegardes compressées. De plus, si la version entreprise utilise quelque chose d'unique à l'entreprise, la version gratuite (express) ne le reconnaîtra pas. Mais, si vous avez quelque chose de standard, théoriquement, il devrait être reconnu.
Juan Acosta
@JuanAcosta ouais, je l'ai mis ensemble. Dans mon cas, aucune fonctionnalité spécifique à l'entreprise n'est utilisée, j'ai donc restauré la sauvegarde sans problème
chester89
@JuanAcosta pouvez-vous me diriger vers une documentation indiquant que l'édition express ne peut pas restaurer la sauvegarde compressée?
chester89
@Chester veuillez consulter la page 234 point 3. L'option par défaut est la seule disponible en version express. books.google.com.au/…
Juan Acosta
15

Exécutez SQL Server Management Studio en tant qu'administrateur (cliquez avec le bouton droit sur le raccourci / exe, puis sélectionnez «Exécuter en tant qu'administrateur»), puis essayez de restaurer.

Keith
la source
10

Je pensais que je n'étais pas assez stupide pour mélanger les versions - cependant, je ne savais pas que sur mon nouveau serveur, une instance de SQL Server 2005 était déjà installée depuis sa naissance nommée SQLEXPRESS. Lors de la tentative de restauration de ma base de données sauvegardée SQL Server 2008 R2 dans SSMS 2012 sur l' SQLEXPRESSinstance, la liste des jeux de sauvegarde était vide.

Finalement, j'ai réalisé que l' SQLEXPRESSinstance sur le serveur n'était pas une instance 2012, mais une 2005. Je me suis déconnecté et connecté à l' instance 2012 réelle (dans mon cas nommé SQLEXPRESS2012), et cela a (évidemment) fonctionné.

Frederik Struck-Schøning
la source
2
Cela m'a orienté dans la bonne direction pour mon problème. J'ai reçu la même erreur que l'affiche d'origine, mais c'était parce que j'essayais de restaurer une sauvegarde de SQL Express 2012 vers une instance de SQL Server 2008. Naturellement, ce n'est pas conseillé, malheureusement l'erreur n'était pas assez descriptive pour s'attaquer à la racine du problème.
LeastOne
1
Hou la la! J'ai installé trop de correctifs à chaud à partir du site, mais cette erreur n'a pas disparu. J'ai vu cette réponse et connecté avec l'instance Sql Server 2012 et j'ai essayé de restaurer, CELA A FONCTIONNÉ! Huh merci :)
Ali Baig
1
Vous dites donc que vous ne pouvez pas restaurer de la version complète à la version express?
Zapnologica
7

Mon problème était que mon utilisateur était dans le groupe Builtin-Administrators et aucun utilisateur avec le rôle Sysadmin sur SQL Server. Je viens de démarrer le Management Studio en tant qu'administrateur. De cette façon, il était possible de restaurer la base de données.

Liz
la source
J'ai utilisé l'article suivant pour créer un nouvel utilisateur sysadmin (voir la section 2 en utilisant le mode mono-utilisateur): wikihow.com/Reset-SA-Password-in-Sql-Server
Savage
6

FYI: J'ai constaté que lors de la restauration, je devais utiliser les mêmes informations d'identification (utilisateur SQL) pour me connecter à SSMS. J'avais d'abord essayé la restauration en utilisant un compte d'authentification Windows.

Ben Ripley
la source
6

Dans mon cas, c'était les permissions et le fait que j'utilisais "Restaurer les fichiers et les groupes de fichiers ..." plutôt que simplement "Restaurer la base de données ...".

Cela a fait la différence.

entrez la description de l'image ici

Brian
la source
6

Pour moi, c'est un problème de privilège utilisateur. Je me suis connecté avec un utilisateur et cela fonctionne bien.

Sharfi
la source
5

Pour moi, le problème était d'avoir le fichier .BAK situé dans un dossier crypté sur le serveur. Même avec les droits d'administrateur complets, je ne pourrais jamais obtenir de SSMS pour lire le fichier. Le déplacement du .BAK vers un dossier non chiffré a résolu mon problème. Notez qu'après avoir déplacé le fichier, vous devrez peut-être également modifier les propriétés du fichier réel pour supprimer le cryptage (clic droit, propriétés, avancé, décochez "crypter le contenu pour sécuriser les données".

GadgetNC
la source
3

J'ai eu le même problème avec SQL Server 2014 (Management Studio ne pouvait pas voir le dossier dans lequel résidait le fichier de sauvegarde, lors d'une tentative de le localiser pour une opération de restauration). Ce fil contenait la réponse qui a résolu mon problème. Citation:

Le compte de service SQL Server peut être trouvé par Démarrer-> Panneau de configuration-> Outils d'administration-> Services. Double-cliquez sur le service SQL Server-> onglet Connexion. Vous utiliserez soit le «compte système local», soit «ce compte» pour définir un compte spécifique. Si vous utilisez le compte Système local, vous ne pourrez pas référencer les sauvegardes qui ne sont pas locales sur le serveur. Si, à la place, vous avez défini le compte à utiliser, il s'agit du compte qui doit avoir accès à l'emplacement du fichier de sauvegarde. Votre capacité à accéder aux sauvegardes à l'aide de votre connexion personnelle n'est pas pertinente; c'est le compte SQL Server qui est utilisé, même si vous lancez la sauvegarde. Vos informaticiens devraient être en mesure de déterminer les droits accordés à chaque compte.

J'espère que cela aide quelqu'un.

BCA
la source
appréciez que vous ayez cité la source ici en ligne, beaucoup plus facile d'utiliser ces informations sans quitter cette page.
qxotk
3

Dans mon cas (nouvelle installation de serveur SQL, utilisateur nouvellement créé), mon utilisateur n'avait tout simplement pas l'autorisation nécessaire. Je me suis connecté au Management Studio en tant que sa , puis je suis allé dans Sécurité / Connexions, cliquez avec le bouton droit sur mon nom d'utilisateur, Propriétés, puis dans la section Rôles du serveur, j'ai vérifié sysadmin.

Marc 2377
la source
2

Pour moi, c'était parce que le fichier de sauvegarde était toujours ouvert par un autre processus. Voici le journal des événements:

BackupDiskFile :: OpenMedia: le périphérique de sauvegarde 'X: \ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak' n'a pas pu s'ouvrir. Erreur 32 du système d'exploitation (le processus ne peut pas accéder au fichier car il est utilisé par un autre processus.).

Le simple fait de fermer et de rouvrir Sql Server Management Studio l'a résolu (donc évidemment, c'était ssms.exe qui avait le handle ..)

JohnZaj
la source
1

Une autre raison potentielle de ce problème semble être Google Drive. Google Drive est en train de compresser des fichiers bak ou quelque chose du genre, donc si vous souhaitez transférer une sauvegarde de base de données via Google Drive, il semble que vous devez d'abord la compresser.

James Gould
la source
1

Si vous souhaitez remplacer complètement la base de données existante, utilisez l' option WITH REPLACE :

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE
Iasmini Gomes
la source
1

Dans mon cas, c'était un problème d'autorisations.

entrez la description de l'image ici

Pour l'utilisateur Windows, j'utilisais n'avait pas de dbcreatorrôle.

J'ai donc suivi les étapes ci-dessous

  1. Connectez-vous saau serveur SQL
  2. Développer Securitydans l'Explorateur d'objets
  3. Développer Logins
  4. Faites un clic droit sur l'utilisateur Windows en question
  5. Cliquez sur Propriétés
  6. Sélectionnez Server Rolesparmi les Select a pageoptions
  7. Vérifier le dbcreatorrôle de l'utilisateur
  8. Cliquez sur OK

entrez la description de l'image ici

Devraj Gadhavi
la source
0

Utilisation de SQL Server 2012 Express.

Mon erreur (à partir du Gestionnaire SQL - Boîte de dialogue de restauration de la base de données):

No backupset selected to be restored

En outre, il n'y avait aucun jeu de sauvegarde affiché dans la liste à sélectionner.

Le problème était que j'avais déplacé 1 des 5 fichiers de sauvegarde dans un dossier où l'utilisateur de connexion au service SQL Server n'avait pas d'autorisations - j'ai essayé d'ajouter cet utilisateur, mais je n'ai pas pu obtenir l'utilisateur NT Service \ MSSQL $ SQLEXPRESS dans la sécurité liste.

J'ai déplacé le fichier sous le dossier Documents pour l'utilisateur du service, ce qui lui a permis de lire tous les fichiers que j'avais sélectionnés - 4 à ce stade - et l'erreur a changé en "jeu de médias manquant" - puis j'ai cherché un autre fichier de sauvegarde , et quand j'ai ajouté que j'ai pu restaurer.

Les réponses à cette question m'ont aidé à chercher aux bons endroits et à trouver une solution.

condiosluzverde
la source
0

Pour moi, c'était une question de permission. J'ai installé SQL Server en utilisant un compte d'utilisateur local et avant de rejoindre le domaine de mon entreprise. Plus tard, j'ai essayé de restaurer une base de données en utilisant mon compte de domaine qui ne dispose pas des autorisations nécessaires pour restaurer les bases de données du serveur SQL. Vous devez corriger l'autorisation pour votre compte de domaine et lui donner l'autorisation d'administrateur système sur l'instance de serveur SQL dont vous disposez.

Anas Ghanem
la source
0

J'ai reçu le même message d'erreur même si je sauvegarde et restaure sur la même machine.

Le problème venait d'ici: lors de la sauvegarde, j'avais 2 éléments dans la boîte de destination.

Donc, le correctif serait: assurez-vous qu'il n'y a qu'un seul élément dans la case «destination». Supprimez tous les autres s'il y en a.

Danniel Little
la source
0

J'ai rencontré le même problème. Exécutez SSMS en tant qu'administrateur, puis cliquez avec le bouton droit de la souris et effectuez la restauration de la base de données. Devrait marcher.

Jonny Boy
la source
0

Je pense que je reçois le prix pour la raison la plus cruelle d'avoir cette erreur. Dans la boîte de dialogue Restaurer la base de données, la liste déroulante de la base de données sous Source est grise et je pensais qu'elle était désactivée. Je suis passé à la liste déroulante de la base de données sous Destination en pensant que c'était la source et j'ai fait une sélection. Cela entraînera l'affichage de ce message d'erreur.

Gabe
la source