什么是一个简单的命令行程序或脚本来备份SQL Server数据库?(What is a simple

2019-06-18 00:47发布

我已经与我们的内部服务器上进行备份数据库过于宽松。

有没有办法,我可以在SQL Server 2005中使用备份某些数据库一个简单的命令行程序? 或者是有一个简单的VBScript?

Answer 1:

备份命令行一个单一的数据库,使用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"

您还需要阅读的文件备份和RESTORE和一般程序 。



Answer 2:

我用ExpressMaint 。

要备份所有用户数据库为我做例子:

C:\>ExpressMaint.exe -S (local)\sqlexpress -D ALL_USER -T DB -BU HOURS -BV 1 -B c:\backupdir\ -DS


Answer 3:

安排如下备份所有的数据库:

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)

也有我的博客更多的细节:如何自动的SQL Server Express备份 。



Answer 4:

我发现这对微软支持页面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 

显然,与您的计算机名称替换您的服务器或可选尝试。\ SQLEXPRESS并确保备份文件夹存在。 在这种情况下,它试图把它放到c:\ SQL_Backup



Answer 5:

您可以使用ApexSQL备份应用程序。 虽然这是一个GUI应用程序,它在CLI支持的所有其功能。 这是可能要么执行一次性备份操作,或创建一个作业,将备份的定期指定的数据库。 您可以检查开关规则,并在文章所示例:

  • ApexSQL备份CLI支持
  • ApexSQL备份CLI实例


Answer 6:

我使用在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}


Answer 7:

最后,如果你没有一个受信任的连接为-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]

哪里

[方案DIR]是其中存在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用户的登录名

[密码]所需的登录密码



Answer 8:

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

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


Answer 9:

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

安排在“任务计划”任务,只要你喜欢,以执行该脚本,它会备份整个DB到BAK文件并保存它,无论你指定。



Answer 10:

SET NOCOUNT ON;
declare @PATH VARCHAR(200)='D:\MyBackupFolder\'
 -- path where you want to take backups
IF OBJECT_ID('TEMPDB..#back') IS NOT NULL

DROP TABLE #back

CREATE TABLE #back
(
RN INT IDENTITY (1,1),
DatabaseName NVARCHAR(200)

)

INSERT INTO #back 
SELECT       'MyDatabase1'
UNION SELECT 'MyDatabase2'
UNION SELECT 'MyDatabase3'
UNION SELECT 'MyDatabase4'

-- your databases List

DECLARE @COUNT INT =0 ,  @RN INT =1, @SCRIPT NVARCHAR(MAX)='',  @DBNAME VARCHAR(200)

PRINT '---------------------FULL BACKUP SCRIPT-------------------------'+CHAR(10)
SET @COUNT = (SELECT COUNT(*) FROM #back)
PRINT 'USE MASTER'+CHAR(10)
WHILE(@COUNT > = @RN)
BEGIN

SET @DBNAME =(SELECT DatabaseName FROM #back WHERE RN=@RN)
SET @SCRIPT ='BACKUP DATABASE ' +'['+@DBNAME+']'+CHAR(10)+'TO DISK =N'''+@PATH+@DBNAME+ N'_Backup_'
+ REPLACE ( REPLACE ( REPLACE ( REPLACE ( CAST ( CAST ( GETDATE () AS DATETIME2 ) AS VARCHAR ( 100 )), '-' , '_' ), ' ' , '_' ), '.' , '_' ), ':' , '' )+'.bak'''+CHAR(10)+'WITH COMPRESSION, STATS = 10'+CHAR(10)+'GO'+CHAR(10)
PRINT @SCRIPT
SET @RN=@RN+1
END

 PRINT '---------------------DIFF BACKUP SCRIPT-------------------------'+CHAR(10)

  SET  @COUNT  =0 SET  @RN  =1 SET @SCRIPT ='' SET @DBNAME =''
 SET @COUNT = (SELECT COUNT(*) FROM #back)
PRINT 'USE MASTER'+CHAR(10)
WHILE(@COUNT > = @RN)
BEGIN
SET @DBNAME =(SELECT DatabaseName FROM #back WHERE RN=@RN)
SET @SCRIPT ='BACKUP DATABASE ' +'['+@DBNAME+']'+CHAR(10)+'TO DISK =N'''+@PATH+@DBNAME+ N'_Backup_'
+ REPLACE ( REPLACE ( REPLACE ( REPLACE ( CAST ( CAST ( GETDATE () AS DATETIME2 ) AS VARCHAR ( 100 )), '-' , '_' ), ' ' , '_' ), '.' , '_' ), ':' , '' )+'.diff'''+CHAR(10)+'WITH DIFFERENTIAL, COMPRESSION, STATS = 10'+CHAR(10)+'GO'+CHAR(10)
PRINT @SCRIPT
SET @RN=@RN+1
END


Answer 11:

如果你能找到DB文件...“CP DBFILES备份/”

几乎可以肯定在大多数情况下不建议 ,但其实很简单,因为所有的装束。



文章来源: What is a simple command line program or script to backup SQL server databases?