备份 SQL Server 中的所有数据库

18 sql-server-2005 sql-server backup

我有一个 Microsoft SQL Server 2005 DB 服务器。在数据库服务器中,我有大约 250 个用户数据库。我必须备份所有这些数据库。由于手动备份会消耗大量时间,我正在寻找一个批处理脚本或数据库脚本,它会自动备份所有 250 个数据库。任何人都可以帮忙吗?

JP *_*han 18

注意:首先在D:驱动器上创建一个文件夹。(例如D:\User_DataBackup\

步骤 1:创建下面给出的过程。

Create PROCEDURE [dbo].[UserDataBaseBackUp]
AS

BEGIN
SET NOCOUNT ON;

DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'D:\User_DataBackup\' -- as same as your created folder' 
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),104)
DECLARE db_cursor CURSOR FOR
  SELECT name
  FROM MASTER.dbo.sysdatabases
  WHERE name NOT IN ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
  SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
  BACKUP DATABASE @name TO DISK = @fileName
  FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
END
Run Code Online (Sandbox Code Playgroud)

第二步:执行上述程序。

 EXEC [UserDataBaseBackUp]
Run Code Online (Sandbox Code Playgroud)

您也可以安排此过程。这个程序已经过测试,希望它会有所帮助。


Amm*_*arR 13

制定维护计划

SQL Server 有这个惊人的功能,它会为你创建脚本和作业

  • 第一步:
    右击Maintenance Plan下方Management

    右键单击管理

  • 第 2 步:
    命名您的计划

    命名计划

  • 步骤 3:
    选择数据库备份任务

    数据库备份任务

  • 步骤 4:
    配置任务,选择数据库、文件夹位置、备份类型(完整、差异、事务日志)连接等。

    配置备份任务

  • 步骤 5:
    配置作业计划

    配置作业计划


我建议为系统数据库和您的用户数据库制定单独的计划以避免任何类型的问题

帮助链接:


Sin*_*our 8

我知道一个事实,即使用 SSMS 维护大量数据库可能有点令人困惑,但它很简单。

我可以推荐一种更有效的方法,那就是使用Ola Hallengren 的维护脚本。它非常酷而且非常有效。您不仅可以备份所有数据库,还可以执行所有类型的维护程序。

例如,您可以备份所有数据库,压缩它们并使用您选择的证书加密它们,使用这样的命令(它们都是可选的,加密和压缩在 SQL Server 2005 上不起作用,但我认为它会展示 Ola 脚本的灵活性和强度):

EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@Compress = 'Y',
@Encrypt = 'Y',
@EncryptionAlgorithm = 'AES_256',
@ServerCertificate = 'MyCertificate'
Run Code Online (Sandbox Code Playgroud)


小智 -2

您还可以使用 PowerShell,如 Buck Woody 的使用 PowerShell 备份所有用户数据库中所示:

# Performs a Full backup followed by a transaction log backup on all user databases

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO")  | out-null
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') 'BWOODY1\SQL2K8'
$bkdir = $s.Settings.BackupDirectory
$dbs = $s.Databases
$dbs | foreach-object {
    $db = $_

    if ($db.IsSystemObject -eq $False -and $db.IsMirroringEnabled -eq $False) {
        $dbname = $db.Name
        $dt = get-date -format yyyyMMddHHmmss
        $dbbk = new-object ('Microsoft.SqlServer.Management.Smo.Backup')
        $dbbk.Action = 'Database'
        $dbbk.BackupSetDescription = "Full backup of " + $dbname
        $dbbk.BackupSetName = $dbname + " Backup"
        $dbbk.Database = $dbname
        $dbbk.MediaDescription = "Disk"
        $dbbk.Devices.AddDevice($bkdir + "\" + $dbname + "_db_" + $dt + ".bak", 'File')
        $dbbk.SqlBackup($s)
        if ($db.DatabaseOptions.RecoveryModel -ne 'Simple') {
            $dt = get-date -format yyyyMMddHHmmss
            $dbtrn = new-object ('Microsoft.SqlServer.Management.Smo.Backup')
            $dbtrn.Action = 'Log'
            $dbtrn.BackupSetDescription = "Trans Log backup of " + $dbname
            $dbtrn.BackupSetName = $dbname + " Backup"
            $dbtrn.Database = $dbname
            $dbtrn.MediaDescription = "Disk"
            $dbtrn.Devices.AddDevice($bkdir + "\" + $dbname + "_tlog_" + $dt + ".trn", 'File')
            $dbtrn.SqlBackup($s)
            }
        }     
    }
Run Code Online (Sandbox Code Playgroud)