IF NOT EXISTS (SELECT 1 FROM master.dbo.sysprocesses WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
PRINT 'SQL Server está ativo mas o SQL Server Agent está INATIVO'
END
ELSE
BEGIN
PRINT 'SQL Server e o SQL Server Agent estão ativos'
END
quinta-feira, 20 de agosto de 2009
Miudezas Parte 1: Último dia do mês.
--Último dia do mês anterior
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
--Último dia do mês atual
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
--Último dia do próximo mês
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
--Último dia do mês atual
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
--Último dia do próximo mês
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))
Horas Uptime
Quer saber a quantidade de horas que seu servidor está ativo?
Os primeiros processos das tabela de sysprocesses são iniciado somente quando o banco é iniciado, e não tem como esses processos pararem ou reiniciarem sem parar o banco. Então a partir deles dá p/ saber quanto tempo seu banco está online.
SELECT 'Uptime: ' + Cast(datediff(mi, login_time, getdate()) /60 as VarChar) + ' Horas'
FROM master..sysprocesses WHERE spid = 1
Os primeiros processos das tabela de sysprocesses são iniciado somente quando o banco é iniciado, e não tem como esses processos pararem ou reiniciarem sem parar o banco. Então a partir deles dá p/ saber quanto tempo seu banco está online.
SELECT 'Uptime: ' + Cast(datediff(mi, login_time, getdate()) /60 as VarChar) + ' Horas'
FROM master..sysprocesses WHERE spid = 1
Como iniciar um Job pelo DOS.
Para isso vamos utilizar o aplicativo do SQLServer para DOS OSql. Ele permite que seja executado qualquer instrução ou arquivo sql apenas pelo prompt do DOS, com funcionamento muito semelhante ao SQLCmd (porém muito mais simples) veremos o funcionamento dele mais detalhadamente em um post mais adiante.
Além do OSql, vamos utilizar o Stored Procedure de sistema "sp_start_job" do banco msdb para iniciar o Job.
Vamos supor que o Job que você quer iniciar se chama Job1. Então, no prompt do DOS:
osql -S "NOME_DO_SERVIDOR" -E -Q"exec msdb.dbo.sp_start_job 'Job1'"
Além do OSql, vamos utilizar o Stored Procedure de sistema "sp_start_job" do banco msdb para iniciar o Job.
Vamos supor que o Job que você quer iniciar se chama Job1. Então, no prompt do DOS:
osql -S "NOME_DO_SERVIDOR" -E -Q"exec msdb.dbo.sp_start_job 'Job1'"
Como executar uma Procedure automaticamente no Start do banco.
Algumas vezes é necessário executar algum processo, stored procedure assim que o banco de dados for iniciado. O exemplo abaixo eu criei para me enviar um e-mail, caso o banco seja reiniciado sem eu saber.
Primeiro eu crio o processo que eu quero que seja executado em uma stored procedure. Ela tem que ser criada no Master.
use master
GO
CREATE PROCEDURE sp_AlertStartDBAS
BEGIN
Declare @sbody as VarChar(4000)
Declare @ssubject as VarChar(4000)
set @sbody = 'O servidor ' + CONVERT(sysname, SERVERPROPERTY('servername')) + ' foi inicializado às ' + Cast(getdate() as VarChar)
set @ssubject = 'Inicialização de Banco de Dados: ' + CONVERT(sysname, SERVERPROPERTY('servername'))
EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Admin', @recipients = 'seuemail@provedor.com.br', @body = @sbody, @subject = @ssubject;
END
O próximo passo é configurar ela para ser executada no Start usando a proc sp_procoption. ( http://msdn.microsoft.com/en-us/library/ms181720.aspx )
EXECUTE sp_procoption @procname = 'sp_AlertStartDB', @optionname = 'startup', @optionvalue = 'on'
Tamanho físico dos arquivos do banco
Quer saber como está o tamanho fisico dos arquivos do seu banco?
SELECT Name,
[Physical_Name],
Left(CONVERT(VARCHAR, CAST( [SIZE]*8 AS MONEY ), 1),
Len(CONVERT(VARCHAR, CAST( [SIZE]*8 AS MONEY ), 1)) - 3) as Size_KB
FROM sys.database_files
Foreing Key sem Indices
Na maioria das vezes se você tem uma FK em uma tabela, a chance de se fazer buscas por essa chave é enorme, então, com bom senso, é bom ter indices nessas FKs.
Como descobrir quais colunas não possuem índices nas chaves estrangeiras (Foreing Key)
Select Object_Name(constid), Object_Name(fkeyid), Object_Name(rkeyid), * From Sysreferences Where not exists (Select 1 from Sysindexkeys Where id = fkeyid and fkey1 = colid and keyno=1)
Assinar:
Postagens (Atom)
