Vous êtes sur la page 1sur 4

Backup and Restore SQL Server Database to a network shared drive - Varun Dhawan's Bl...

Page 1 of 4

Backup and Restore SQL Server Database to a network shared


drive
Varun_SQL 4 Jun 2009 1:12 AM 3

Hello All,

You have a situation wherein you want to backup SQL Server database to a network mapped drive. So all you
thought of doing is mapping the drive from Operating System with a Drive Letter. Now you tried taking the backup
from SSMS backup GUI, however you cannot view the network mapped drive.

As per SQL Server Books-On-Line:

“For a network share to be visible to SQL Server, the share must be mapped as a network drive in the session in
which SQL Server is running”

STEPS TO BACKUP DATABASE TO NETWORK MAPPED DRIVE:

Prerequisite: The steps are applicable on machines running under “Domain Account”.

Step # 1. Map the network drive:


EXEC xp_cmdshell 'net use <drivename> <share name>'

Example: EXEC XP_CMDSHELL 'net use H: \\machinename\sharename'

Step # 2. Verify drive mapping:


Example: EXEC XP_CMDSHELL 'Dir H:'

Step # 3. Delete the network map drive


Example: EXEC XP_CMDSHELL 'net use H: /delete'

Once done, you will be able to view the network mapped drive from Backup/Restore GUI.

NOTE: Only flipside is that this network drive mapping will remain till next SQL Server Service restart. So, To
make above 'Network Drive mapping’ Permanent follow either of below options

Option 1. – Using Backup Device


- After completing Step # 1. and Step # 2. Create a “Backup Device” for above network mapped drive. For details
refer >> How to: Define a Logical Backup Device for a Disk File

- Once “Backup Device” is created, network mapped drive will be visible across SQL Server reboot.

Option 2. – Using “start-up” Stored Procedure


Step 1. Create a Procedure

CREATE PROC map_drive_satrtup


As
EXEC xp_cmdshell 'net use <drivename> <share name>'

Step 2. Set Procedure Options

http://blogs.msdn.com/b/varund/archive/2009/06/04/backup-sql-server-database-to-a-shar... 23/03/2011
Backup and Restore SQL Server Database to a network shared drive - Varun Dhawan's Bl... Page 2 of 4

sp_procoption @ProcName = 'map_drive_satrtup'


, @OptionName = 'startup'
, @OptionValue = 'on'

Alternate way to Backup and Restore SQL Server database from Network
Shared Drive -
Using Trace Flag 1807

In SQL 2008/R2 and SQL 2005, By default, you cannot backup and restore a database on a network shared
drive. This restriction is primarily due to fact that, On a network file share, there is always a risk on network errors
compromising database integrity, along with I/O performance issues which might partial or total data loss or
corruption. Reference >> Microsoft KB # 304261

However, there’s a “workaround”, if in case you still want to go ahead. Follow below steps:

Step 1. Enable the Trace Flag 1807: (Bypasses the check and allows you to configure SQL Server with network-
based database files)

DBCC TRACEON(1807, -1)

Step 2. Identify a file share, where SQL Server Service start-up account has FULL access for Reading and Write

--Backup to network drive--


BACKUP DATABASE [Sample] TO DISK = N'\\machinename\sharename'\sample_full.bak'
GO

--Restore from network drive--


RESTORE DATABASE [Sample] FROM DISK = N'\\machinename\sharename'\sample_full.bak'
WITH FILE = 1, NOUNLOAD, STATS = 10
GO

CAUTION: While the above options will surely help you to manage space used by database file across your
networked servers, please be aware of the risk involved (as I discussed above). Once such known issue has
been discussed in this CSS post. It is therefore advised to run SQLIOSIM.exe that ships with SQL Server 2008
R2, this has now been updated to allow testing against a UNC locations.

Additionally…..while using XP_CMDSHELL option, if you get below ERROR????

Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1


SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this
component is turned off as part of the security configuration for this server. A system administrator
can enable the use of 'xp_cmdshell' by using sp_configure.

The above error clearly indicates that you need to ENABLE xp_cmdshell. Use below command:

sp_configure 'xp_cmdshell',1;
Go
RECONFIGURE WITH OVERRIDE;
Go

Disclaimer: I work at Microsoft. Everything here, though, is my personal opinion and is not read or approved by
Microsoft before it is posted. No warranties or other guarantees will be offered as to the quality of the opinions or
anything else offered here.

Comments

http://blogs.msdn.com/b/varund/archive/2009/06/04/backup-sql-server-database-to-a-shar... 23/03/2011
Backup and Restore SQL Server Database to a network shared drive - Varun Dhawan's Bl... Page 3 of 4

Steven P Harris
15 Jun 2009 4:53 AM

here's another way of doing it...

USE [master]

GO

-- drop the backup device from last time

EXEC master.dbo.sp_dropdevice @logicalname = N'Network_Share_Device'

GO

-- generate a backup device and file name

DECLARE @backupfile_name VARCHAR(50)

SET @backupfile_name = '\\servername\Backup$\dbname_'

+ CONVERT(VARCHAR(8), GETDATE(), 112) + '.bak'

-- create the backup device / filename

EXEC master.dbo.sp_addumpdevice @devtype = N'disk',

@logicalname = N'Network_Share_Device', @physicalname = @backupfile_name

GO

-- backup the database to the newly created backup device / filename

BACKUP DATABASE [dbname] TO [Network_Share_Device] WITH DESCRIPTION =

N'Backing up DBNAME to a network share drive', NOFORMAT, INIT, NAME =

N'Backup_DB_BkUp_to_Network_Share', SKIP, NOREWIND, NOUNLOAD,

STATS = 10, CHECKSUM

GO

Additionally on the remote server, set up a bat file job to delete old .bak files, with the following:

Forfiles /p “f:\data\backups” /m “filename_*.bak” /c “cmd /c del /Q ~path” /d -30

Varun
21 Jul 2009 3:18 AM

Thanks Steven,

Yes! I Tried it. It's a good and better option.

Jason
10 Sep 2009 11:58 AM

Thanks for the code Steven.

http://blogs.msdn.com/b/varund/archive/2009/06/04/backup-sql-server-database-to-a-shar... 23/03/2011
Backup and Restore SQL Server Database to a network shared drive - Varun Dhawan's Bl... Page 4 of 4

One change to the forfiles command.

Forfiles /p “f:\data\backups” /m “filename_*.bak” /c “cmd /c del /Q @path” /d -30

http://blogs.msdn.com/b/varund/archive/2009/06/04/backup-sql-server-database-to-a-shar... 23/03/2011

Vous aimerez peut-être aussi