O que é um programa simples de linha de comando ou programa para backup de bases de dados de servidor SQL?
Existe um programa simples de linha de comando que eu possa usar para fazer backup de certas bases de dados no servidor sql 2005? Ou existe um simples VBScript?
10 answers
Para salvaguardar uma única base de dados a partir da linha de comandos, utilize osql ou 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"
Você também vai querer ler a documentação em BACKUP e RESTAURAR e procedimentos gerais.
Programe o seguinte para salvaguardar todas as bases de dados:
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)
Também existem mais detalhes no meu blog: Como automatizar as cópias de segurança SQL Server Express .
Eu uso ExpressMaint .
Para fazer cópias de segurança de todas as bases de dados de utilizadores, faço por exemplo:
C:>ExpressMaint.exe-S (local)\sqlexpress-D ALL_USER-T DB-BU HOURS-BV 1-B c:\backupdir\ - DS
Encontrei isto numa página de suporte da Microsoft http://support.microsoft.com/kb/2019698.
Funciona muito bem! E desde que veio da Microsoft, sinto que é bastante legítimo. Basicamente, há dois passos.- crie um procedimento armazenado no seu db mestre. Veja msft link ou se estiver quebrado tente aqui: http://pastebin.com/svRLkqnq
-
Agende a cópia de segurança do seu programador de Tarefas. É melhor pôr um .bat or .comando arquiva primeiro e depois Marca esse ficheiro.
sqlcmd -S YOUR_SERVER_NAME\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='C:\SQL_Backup\', @backupType='F'" 1>c:\SQL_Backup\backup.log
Obviamente substitua o SEU_ SERVIDOR_ nome pelo nome do seu computador ou opcionalmente tente .\SQLEXPRESS e certifique-se que a pasta de backup existe. Neste caso, está a tentar colocá - lo c:\SQL_Backup
Você pode usar a aplicação de backup pelo ApexSQL. Embora seja uma aplicação GUI, tem todas as suas funcionalidades suportadas no CLI. É possível realizar operações de backup de uma só vez, ou criar um trabalho que faria backup de bases de dados especificadas na base regular. Pode verificar as regras de comutação e examinar nos artigos:
Estou a usar o tsql numa infra-estrutura Linux / UNIX para aceder às bases de dados MSSQL. Aqui está um script de shell simples para enviar uma tabela para um arquivo:
#!/usr/bin/ksh
#
#.....
(
tsql -S {database} -U {user} -P {password} <<EOF
select * from {table}
go
quit
EOF
) >{output_file.dump}
Eventual se não tiver uma ligação de confiança como o interruptor declara
Utilizar a seguinte linha de comandos
"[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]
Em que
[Programa dir] é a pasta onde o osql.o exe existe
On 32bit OS c:\Program Files\Microsoft SQL Server\
On 64bit OS c:\Program Files (x86)\Microsoft SQL Server\
[SQL server version] your SQL server version 110, 100, 90 ou 80 begin with the largest number
[servidor] o seu servidor ou Servidor ip
[id de autenticação] o seu nome de utilizador do servidor de ms-sql
[senha] a autenticação necessária senha
Abaixo está o programa simples para fazer cópia de segurança da base de dados.
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
Você poderia usar um Script VB que eu escrevi exatamente para este propósito: https://github.com/ezrarieben/mssql-backup-vbs/
Agendar uma tarefa no "escalonamento de tarefas" para executar o programa como quiser e irá salvaguardar o DB inteiro para um ficheiro BAK e gravá-lo onde você indicar.
Se conseguires encontrar os ficheiros DB... "CP DBFiles backup/"
Quase de certeza não é aconselhável na maioria dos casos, mas é simples como toda a roupa.