sql-server - restaurar - script para hacer backup sql server
¿Qué es un programa de línea de comandos simple o script para hacer una copia de seguridad de las bases de datos del servidor SQL? (9)
He sido muy flojo con la realización de copias de seguridad de bases de datos en nuestros servidores internos.
¿Existe un programa de línea de comando simple que pueda usar para hacer copias de seguridad de ciertas bases de datos en SQL Server 2005? ¿O hay un simple VBScript?
A continuación se muestra el script simple para hacer una copia de seguridad de la base de datos.
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
Encontré esto en una página de Soporte de Microsoft http://support.microsoft.com/kb/2019698 .
¡Funciona genial! Y como vino de Microsoft, siento que es bastante legítimo.
Básicamente hay dos pasos.
- Crea un procedimiento almacenado en tu db maestro. Vea el enlace msft o si está roto, intente aquí: http://pastebin.com/svRLkqnq
Programe la copia de seguridad desde su planificador de tareas. Es posible que desee colocar primero en un archivo .bat o .cmd y luego programar ese archivo.
sqlcmd -S YOUR_SERVER_NAME/SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation=''C:/SQL_Backup/', @backupType=''F''" 1>c:/SQL_Backup/backup.log
Obviamente, reemplace YOUR_SERVER_NAME con el nombre de su computadora o, opcionalmente, pruebe. / SQLEXPRESS y asegúrese de que la carpeta de copia de seguridad exista. En este caso, trata de ponerlo en c: / SQL_Backup
Estoy usando tsql en una infraestructura Linux / UNIX para acceder a bases de datos MSSQL. Aquí hay un script de shell simple para volcar una tabla en un archivo:
#!/usr/bin/ksh
#
#.....
(
tsql -S {database} -U {user} -P {password} <<EOF
select * from {table}
go
quit
EOF
) >{output_file.dump}
Eventual si no tienes una conexión de confianza como el interruptor -E declara
Use la siguiente línea de comando
"[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]
Dónde
[directorio de programa] es el directorio donde existe el osql.exe
On 32bit OS c:/Program Files/Microsoft SQL Server/
On 64bit OS c:/Program Files (x86)/Microsoft SQL Server/
[versión de servidor sql] su versión de servidor sql 110 o 100 o 90 u 80 comienza con el número más grande
[servidor] tu nombre de servidor o servidor ip
[login id] su nombre de usuario del servidor ms-sql
[contraseña] la contraseña de inicio de sesión requerida
Para realizar una copia de seguridad de una única base de datos desde la línea de comandos, use sqlcmd o 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"
También querrá leer la documentación sobre BACKUP y RESTORE y los procedimientos generales .
Programe lo siguiente para hacer una copia de seguridad de todas las Bases de datos:
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)
También hay más detalles en mi blog: cómo automatizar las copias de seguridad de SQL Server Express .
Puede usar la aplicación de copia de seguridad por ApexSQL. Aunque es una aplicación GUI, tiene todas sus características compatibles con CLI. Es posible realizar operaciones de copia de seguridad por única vez o crear un trabajo que haga copias de seguridad de bases de datos especificadas de forma regular. Puede consultar las reglas de cambio y ejemplos en los artículos:
Si puede encontrar los archivos de base de datos ... "cp DBFiles backup /"
Casi con seguridad no es aconsejable en la mayoría de los casos , pero es simple como todo.
Yo uso ExpressMaint .
Para hacer una copia de seguridad de todas las bases de datos de usuario que hago, por ejemplo:
C:> ExpressMaint.exe -S (local) / sqlexpress -D ALL_USER -TB -BU HOURS -BV 1 -B c: / backupdir / -DS