Page d'accueil » comment » Comment sauvegarder des bases de données SQL sur un partage réseau

    Comment sauvegarder des bases de données SQL sur un partage réseau

    Il est indispensable de sauvegarder régulièrement les bases de données SQL. Nous avons déjà couvert les moyens de sauvegarder facilement toutes vos bases de données de serveur SQL sur un disque dur local, mais cela ne protège pas contre les pannes de lecteur et / ou du système. En tant que couche supplémentaire de protection contre ce type de sinistre, vous pouvez copier ou créer directement vos sauvegardes sur un partage réseau..

    Sauvegarde locale, puis copie sur le partage réseau

    La méthode la plus simple et la plus directe pour accomplir cette tâche consiste simplement à créer une sauvegarde locale d'une base de données, puis à copier le fichier de sauvegarde correspondant sur un partage réseau. Vous pouvez le faire en créant un script batch qui ressemble à ceci:

    SET LocalFolder = C: Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup
    SqlCmd -E -Q “Sauvegarder la base de données MyDB sur le disque ="% LocalFolder% MyDB.bak "”
    XCopy “% LocalFolder% MyDB.bak” “\ 192.168.16.55BackupDatabases” / Z / V
    DEL «% LocalFolder% MyDB.bak»

    Ce script effectue les opérations suivantes (ligne par ligne):

    1. Définit une variable sur le répertoire de sauvegarde SQL local.
    2. Crée une sauvegarde SQL de MyDB (à l'aide de l'authentification Windows) dans le répertoire de sauvegarde SQL local.
    3. Copie le fichier de sauvegarde local sur un partage réseau.
    4. Supprime le fichier de sauvegarde local.

    Là encore, il s'agit de la méthode préférée, car elle fonctionne immédiatement et la probabilité d'un échec de sauvegarde est minime, car la sauvegarde est créée sur un disque local. Toutefois, si vous ne disposez pas de suffisamment d'espace disque pour stocker des copies locales des fichiers de sauvegarde, cette action échouera. Dans ce cas, vous devrez ajouter de l'espace disque ou sauvegarder directement sur un partage réseau..

    Sauvegarde directe sur un partage réseau

    En règle générale, lorsque vous essayez de créer une sauvegarde directement sur un partage réseau à l'aide d'une commande telle que:

    SqlCmd -E -Q “Sauvegarder la base de données MyDB sur le disque =" \ 192.168.16.55BackupDatabasesMyDB.bak "”

    Vous obtiendrez probablement une erreur du type:

    Msg 3201, Niveau 16, Etat 1, Serveur JF, Ligne 1
    Impossible d'ouvrir le périphérique de sauvegarde '\ 192.168.16.55BackupDatabasesMyDB.bak'. Erreur du système d'exploitation 5 (l'accès est refusé.).
    Msg 3013, Niveau 16, Etat 1, Serveur JF, Ligne 1
    BACKUP DATABASE se termine anormalement.

    Cette erreur se produit malgré le fait que vous ayez exécuté la commande de sauvegarde SQL à l'aide de l'authentification Windows (le commutateur -E) et que le compte Windows permette d'accéder aux fichiers et de les copier sur le partage via l'Explorateur Windows..

    Cette action échoue parce que la commande SQL est exécutée dans les limites du compte sous lequel le service SQL Server est exécuté. Lorsque vous affichez la liste de services sur votre ordinateur, vous verrez probablement le service SQL Server s'exécuter en tant que (colonne Ouvrir une session en tant que), soit Système local, soit Service réseau, qui sont des comptes système sans accès réseau..

    Sur notre système, la commande de sauvegarde sur un partage réseau échoue car le service SQL Server s'exécute en tant que système local qui, une fois encore, ne peut accéder aux ressources du réseau..

    Afin de permettre à SQL de sauvegarder directement sur un partage réseau, nous devons exécuter le service SQL Server en tant que compte local ayant accès aux ressources réseau..

    Modifiez les propriétés du service SQL Server et, sous l'onglet Connexion, configurez le service pour qu'il s'exécute sous un autre compte disposant des droits d'accès au réseau..

    Lorsque vous cliquez sur OK, vous recevez une invite indiquant que les paramètres ne prendront effet qu'au redémarrage du service..

    Redémarrer le service.

    La liste des services doit maintenant indiquer que le service SQL Server est exécuté en tant que compte configuré.

    Maintenant, lorsque vous exécutez la commande pour sauvegarder directement sur un partage réseau:

    SqlCmd -E -Q “Sauvegarder la base de données MyDB sur le disque =" \ 192.168.16.55BackupDatabasesMyDB.bak "”

    Vous devriez voir un message de réussite:

    152 pages traitées pour la base de données 'MyDB', fichier 'MyDB' dans le fichier 1.
    2 pages traitées pour la base de données 'MyDB', fichier 'MyDB_log' sur le fichier 1.
    La base de données de sauvegarde a traité 154 pages en 0,503 seconde (2,493 Mo / sec)..

    Avec le fichier de sauvegarde maintenant dans le répertoire de partage réseau:

    Considérations sur le partage réseau

    Il est important de noter que la commande de sauvegarde s'attend à pouvoir se connecter directement au partage réseau sans être invité à fournir des informations d'identification. Le compte sur lequel vous avez configuré le service SQL Server pour qu'il soit exécuté doit avoir une connexion sécurisée avec le partage réseau où les informations d'identification respectives autorisent l'accès, sinon une telle erreur peut se produire:

    Msg 3201, Niveau 16, Etat 1, Serveur JF, Ligne 1
    Impossible d'ouvrir le périphérique de sauvegarde '\ 192.168.16.55BackupDatabasesMyDB.bak'. Erreur du système d'exploitation 1326 (Échec d'ouverture de session: nom d'utilisateur inconnu ou mot de passe incorrect.).
    Msg 3013, Niveau 16, Etat 1, Serveur JF, Ligne 1
    BACKUP DATABASE se termine anormalement.

    Cette erreur indique que le nom d'utilisateur et le mot de passe du compte n'ont pas été acceptés par le partage réseau et que la commande a échoué..

    Un autre problème à garder à l'esprit est que la sauvegarde est effectuée directement sur une ressource réseau. Par conséquent, tout problème survenu dans la connexion réseau peut entraîner l'échec de votre sauvegarde. Pour cette raison, vous ne devez sauvegarder que sur des emplacements réseau stables (c'est-à-dire probablement pas un VPN)..

    Implications pour la sécurité

    Comme indiqué précédemment, il est préférable d'utiliser la méthode de sauvegarde locale, puis de copie sur un partage réseau, car elle vous permet d'exécuter le service SQL en tant que compte disposant uniquement d'un accès au système local..

    En exécutant le service en tant que compte alternatif, vous ouvrez la porte à des problèmes de sécurité potentiels. Par exemple, un script SQL illicite pourrait s'exécuter sous le compte alternatif et attaquer les ressources du réseau. En outre, toute modification apportée au compte concerné (modifications / expirations du mot de passe ou suppression / désactivation du compte) empêchera le service SQL Server de démarrer..

    Il est important de garder ces points à l'esprit si vous exécutez votre instance SQL Server à l'aide d'un autre compte. Bien que ces précautions ne soient pas arrêtées si les précautions appropriées sont prises, vous devez envisager d'ajouter de l'espace supplémentaire sur le disque dur, puis implémenter la sauvegarde et la copie locales afin de pouvoir exécuter le service SQL à l'aide d'un compte local..