代码之家  ›  专栏  ›  技术社区  ›  Frank Krueger

备份SQL Server数据库的简单命令行程序或脚本是什么?

  •  87
  • Frank Krueger  · 技术社区  · 16 年前

    我对在我们的内部服务器上执行DB备份过于松懈。

    有没有一个简单的命令行程序可以用来备份SQL Server 2005中的某些数据库?还是有一个简单的vbscript?

    10 回复  |  直到 6 年前
        1
  •  100
  •   Craig Trader    8 年前

    要从命令行备份单个数据库,请使用 osql sqlcmd .

    "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\osql.exe" 
        -E -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak' WITH FORMAT"
    

    您还需要阅读 BACKUP RESTORE general procedures .

        2
  •  9
  •   GateKiller    16 年前

    计划以下操作以备份所有数据库:

    Use Master
    
    Declare @ToExecute VarChar(8000)
    
    Select @ToExecute = Coalesce(@ToExecute + 'Backup Database ' + [Name] + ' To Disk =     ''D:\Backups\Databases\' + [Name]   + '.bak'' With Format;' + char(13),'')
    From
    Master..Sysdatabases
    Where
    [Name] Not In ('tempdb')
    and databasepropertyex ([Name],'Status') = 'online'
    
    Execute(@ToExecute)
    

    我的博客上还有更多的细节:如何 Automate SQL Server Express Backups .

        3
  •  9
  •   Suraj Kumar zip    6 年前

    我用 ExpressMaint .

    要备份所有用户数据库,请执行以下操作:

    C:\>ExpressMaint.exe -S (local)\sqlexpress -D ALL_USER -T DB -BU HOURS -BV 1 -B c:\backupdir\ -DS
    
        4
  •  5
  •   John W.    12 年前

    我在Microsoft支持页上找到了这个 http://support.microsoft.com/kb/2019698 .

    它很管用!既然它来自微软,我觉得它是相当合法的。

    基本上有两个步骤。

    1. 在主数据库中创建存储过程。请参阅MSFT链接,或者如果它已损坏,请在此处尝试: http://pastebin.com/svRLkqnq
    2. 从任务计划程序安排备份。您可能需要先将其放入.bat或.cmd文件中,然后计划该文件。

      sqlcmd -S YOUR_SERVER_NAME\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='C:\SQL_Backup\', @backupType='F'"  1>c:\SQL_Backup\backup.log            
      

    显然,用您的计算机名替换您的\u服务器\名称,或者选择尝试。\sqlexpress并确保备份文件夹存在。在这种情况下,它试图将其放入C:\SQL\U备份

        5
  •  5
  •   P.Thompson    7 年前

    您可以通过apexsql使用备份应用程序。尽管它是一个GUI应用程序,但它在CLI中支持所有功能。可以执行一次性备份操作,也可以创建定期备份指定数据库的作业。您可以查看切换规则,并在以下文章中进行示例:

        6
  •  4
  •   Brian Webster Jason    12 年前

    我在Linux/Unix基础设施上使用TSQL访问MSSQL数据库。下面是一个将表转储到文件的简单shell脚本:

    #!/usr/bin/ksh
    #
    #.....
    (
    tsql -S {database} -U {user} -P {password} <<EOF
    select * from {table}
    go
    quit
    EOF
    ) >{output_file.dump}
    
        7
  •  2
  •   George Vrynios    10 年前

    最终,如果您没有“e”开关声明的可信连接,

    使用以下命令行

    "[program dir]\[sql server version]\Tools\Binn\osql.exe" -Q "BACKUP DATABASE mydatabase TO DISK='C:\tmp\db.bak'" -S [server] –U [login id] -P [password]

    在哪里?

    [程序目录]是osql.exe存在的目录。

    On 32bit OS c:\Program Files\Microsoft SQL Server\
    On 64bit OS c:\Program Files (x86)\Microsoft SQL Server\

    [SQL Server版本]您的SQL Server版本110、100、90或80以最大的数字开头

    [服务器]您的服务器名或服务器IP

    [登录ID]您的MS SQL Server用户登录名

    [密码]所需的登录密码

        8
  •  2
  •   Jitendra Pancholi    9 年前

    下面是进行数据库备份的简单脚本。

    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
    
    
    -- specify database backup directory
    SET @path = 'C:\Backup\'  
    
    
    -- specify filename format
    SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 
    
    
    DECLARE db_cursor CURSOR FOR  
    SELECT name 
    FROM master.dbo.sysdatabases 
    WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
    
    
    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
    
        9
  •  0
  •   ezrarieben    6 年前

    你可以使用我为这个目的编写的一个VB脚本: https://github.com/ezrarieben/mssql-backup-vbs/

    在“任务调度程序”中调度一个任务来执行您喜欢的脚本,它会将整个数据库备份到BAK文件,并将其保存到您指定的任何位置。

        10
  •  -10
  •   BCS    16 年前

    如果你能找到数据库文件…”cp dbfiles备份/“

    几乎肯定 不可取 在大多数情况下 但这和所有的准备一样简单。