Hoje precisei matar algumas conexões ativas em uma base de dados específica então o fiz. Geralmente isto é um processo cansativo, abrir o abrir o enterprise manager e matar cada processo ativo, um por um. Quando você tem uma ou duas conexões ativas é tranquilo, agora quando você tiver 10 conexões pode ser um processo irritante e cansativo. Então para ajudar nesta tarefa árdua aqui vai o script que busca todas as conexões ativas de uma dada base de dados e mata cada conexão.
--Colocar a base de dados em modo single_user
alter database dbName set single_user with rollback immediate
-- Agora vamos realizar a tarefa de matar as conexões
declare @execSql varchar(1000), @databaseName varchar(100)
-- Set the database name for which to kill the connections
set @databaseName = 'MinhaDatabase'
set @execSql = ''
select @execSql = @execSql + 'kill ' + convert(char(10), spid) + ' '
from master.dbo.sysprocesses
where db_name(dbid) = @databaseName
and
DBID <> 0
and
spid <> @@spid
exec(@execSql)
--Agora vamos repor a base de dados para modo multi_user:
alter database dbName set multi_user with rollback immediate
Blog com conteúdo sobre os projetos que tenho trabalhado: SEGURANÇA DA INFORMAÇÃO, VOIP COM ASTERISK, VIRTUALIZAÇÃO DE SERVIDORES VMWARE SERVER, ESX, EMAIL, FIREWALL, WEB-PROXIES, VPN, MIGRAÇÕES, LDAP, SAMBA, AD, ORACLE, MySQL, RADIUS, DHCP, DNS, PHP, C++, AUTENTICAÇÃO WIFI, CAPTIVEPORTAL, SATELITE, NETWORK...
Pesquisar neste blog
Mostrando postagens com marcador MSSQL. Mostrar todas as postagens
Mostrando postagens com marcador MSSQL. Mostrar todas as postagens
terça-feira, 7 de abril de 2009
Criando um script de backup para o SQL Server com data no nome do arquivo da base
Olá pessoal,
aqui vai uma dica de como criar arquivos de backup do sqlserver com a data no nome do arquivo, o que nos facilita muito, pois o sqlserver não nos permite isso usando o gerenciador de backups dele, ele apenas nos permite agendar um dump da base.
Bom o script que falo é um arquivo com instruções sql, onde vamos definir as seguintes variáveis:
Para agendar o script para rodar diariamente é só criar um new job e na aba steps, campo comand colar o conteúdo do script e pronto.
Ai vai o script:
aqui vai uma dica de como criar arquivos de backup do sqlserver com a data no nome do arquivo, o que nos facilita muito, pois o sqlserver não nos permite isso usando o gerenciador de backups dele, ele apenas nos permite agendar um dump da base.
Bom o script que falo é um arquivo com instruções sql, onde vamos definir as seguintes variáveis:
- Setar nome da database na variável @databaseName
- Setar o caminho absoluto da pasta onde vai ser armazenado o backup na variável @backupDirectory
- Para testar rode o script pelo Query Analyzer.
Para agendar o script para rodar diariamente é só criar um new job e na aba steps, campo comand colar o conteúdo do script e pronto.
Ai vai o script:
-----------------------------------------------------------------
-- Backup database to file
-----------------------------------------------------------------
declare @backupFileName varchar(100), @backupDirectory varchar(100),
@databaseDataFilename varchar(100), @databaseLogFilename varchar(100),
@databaseDataFile varchar(100), @databaseLogFile varchar(100),
@databaseName varchar(100), @execSql varchar(1000)
-- Set the name of the database to backup
set @databaseName = 'MinhaDatabase'
-- Set the path fo the backup directory on the sql server pc
set @backupDirectory = 'caminho_absoluto_para_backup_directory' -- such as 'c:\temp\'
--
-- ATENÇÃO: DAQUI PARA BAIXO NÃO PRECISA MECHER EM NADA
--
-- Create the backup file name based on the backup directory, the database name and today's date
set @backupFileName = @backupDirectory + @databaseName + '-' + replace(convert(varchar, getdate(), 110), '-', '.') + '.bak'
-- Get the data file and its path
select @databaseDataFile = rtrim([Name]),
@databaseDataFilename = rtrim([Filename])
from master.dbo.sysaltfiles as files
inner join
master.dbo.sysfilegroups as groups
on
files.groupID = groups.groupID
where DBID = (
select dbid
from master.dbo.sysdatabases
where [Name] = @databaseName
)
-- Get the log file and its path
select @databaseLogFile = rtrim([Name]),
@databaseLogFilename = rtrim([Filename])
from master.dbo.sysaltfiles as files
where DBID = (
select dbid
from master.dbo.sysdatabases
where [Name] = @databaseName
)
and
groupID = 0
print 'Backing up "' + @databaseName + '" database to "' + @backupFileName + '" with '
print ' data file "' + @databaseDataFile + '" located at "' + @databaseDataFilename + '"'
print ' log file "' + @databaseLogFile + '" located at "' + @databaseLogFilename + '"'
set @execSql = '
backup database [' + @databaseName + ']
to disk = ''' + @backupFileName + '''
with
noformat,
noinit,
name = ''' + @databaseName + ' backup'',
norewind,
nounload,
skip'
exec(@execSql)
Assinar:
Postagens (Atom)