Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment attacher un MDF sans fichier journal ?

Pour votre situation initiale, il semble que vous ayez essayé quelque chose comme ça (ou tout ce que l'interface graphique prépare pour vous lorsque vous parcourez les boîtes de dialogue) :

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;

Cependant, cette méthode nécessite à la fois un mdf fichier et un ldf dossier. Sinon, vous obtenez un message d'erreur semblable à :

Maintenant, il existe un moyen de procéder même si vous n'avez que le mdf dossier. En supposant que vous avez un mdf fichier qui a été correctement détaché de SQL Server, vous devriez pouvoir joindre le mdf fichier sans fichier journal en utilisant la syntaxe suivante :

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;

Cependant, il semble que dans votre cas, le fichier n'ait pas été correctement détaché de SQL Server :

Il existe plusieurs explications possibles, y compris celles mentionnées dans le message d'erreur. Peut-être a-t-il été récupéré à partir d'un shadow SAN invalide, ou détaché en lecture seule, ou récupéré après le crash de SQL Server ou du système sous-jacent, ou corrompu pendant la copie/téléchargement, ou qui sait quoi d'autre.

Vous devrez retourner au support de Yaf, ou au support de leur fournisseur de services, pour voir s'il existe des sauvegardes appropriées disponibles ou, à défaut, des copies alternatives du mdf dossier. Gardez également à l'esprit qu'aucun de nous ne sait vraiment ce qu'est Yaf ou n'a aucun moyen de vérifier de quel Yaf vous parlez.

Sinon, il semble que vous n'ayez pas de chance, puisque ce mdf particulier le fichier n'est pas valide et ne vous mènera donc pas très loin.

C'est précisément pourquoi les approches de détachement/attachement et/ou de copie de fichiers au niveau du système d'exploitation ne sont pas des méthodes de sauvegarde (ou de migration, d'ailleurs) très utiles pour SQL Server. Vous avez besoin d'un plan de sauvegarde/récupération approprié, c'est-à-dire d'effectuer des sauvegardes complètes/diff/journaux adaptées à votre tolérance à la perte de données. Et détacher une base de données est presque toujours une idée inférieure - quand quelque chose arrive au mdf fichier pendant ou après le détachement, vous avez maintenant ZÉRO copies de votre base de données.