Arquivo da tag: SQL Server

Powershell, Excel e SQL uma combinação excelente

Blog do Leka

Uma coisa muito legal em automatizar tarefas é a dificuldade que temos em planejar o que vai ser executado, a forma que vai ser executado e manter da forma mais genérica possível para garantir que vai funcionar na maior parte dos ambientes sem precisar sofrer muita alteração…

Agora imagina uma rotina qualquer em que você precisa ficar pegando resultados colocando no excel para fazer alguma graça interessante para alguém…

O posh abaixo faz exatamente isso. Ele conecta em um servidor que você definir, pega o nome dos bancos e executa a mesma query em cada um dos bancos,,,

até aí nenhuma novidade, certo?

O legal é que o resultado já vai para o excel, formatado e com auto filtro… e cada guia é a resposta de um banco deste servidor.

Você pode alterar a query para executar o que quiser, fragmentação de índice? blz…. um único select de uma única base? sem problemas…

Ver o post original 46 mais palavras

(TSQL) Trigger – Movimentação de Estoque (Exemplo)

Fonte e Direitos – Fórum Microsoft

–A dica de hoje tem o objetivo de demonstrar e exemplificar como criar um processo de atualização automática de saldo em estoque de um determinado produto, através da utilização de Triggers no SQL Server.

— Criando a tabela de Produtos github
Create Table NovosProdutos (
  Codigo Int Identity(1,1)
, Descricao VarChar(20)
, Saldo Int)


— Populando…
Insert Into NovosProdutos Values(‘Produto – ‘+ Convert(VarChar(3),@@Identity), 0)

Go 100


— Ver a tabela Novos Produtos
Select * From NovosProdutos

— Criando tabela de Movimentações
Create Table Movimentacao(

Codigo Int Identity(1,1)
, CodProduto Int
, TipoMovimentacao Char(1)
, Valor Int)
— Criando a Trigger de Movimentação (E- Entrada / S – Saída)
Create Trigger T_MovimentacaoSaldo On Movimentacao After Insert, Update As
Declare @TipoMovimentacao Char(1)
Select @TipoMovimentacao=TipoMovimentacao from Inserted
If @TipoMovimentacao = ‘E
Begin
Update NovosProdutos
Set Saldo = Saldo + I.Valor
from NovosProdutos NP Inner Join Inserted I On NP.Codigo = I.CodProduto
End

If @TipoMovimentacao = ‘S
Begin
Update NovosProdutos
Set Saldo = Saldo – I.Valor
from NovosProdutos NP Inner Join Inserted I On NP.Codigo = I.CodProduto
End

–Fazendo lançamentos de entrada
Insert Into Movimentacao Values(2,’E’,10)
Insert Into Movimentacao Values(2,’E’,15)
Insert Into Movimentacao Values(2,’E’,5)
Insert Into Movimentacao Values(2,’E’,22)
Insert Into Movimentacao Values(2,’E’,10)
Insert Into Movimentacao Values(1,’E’,15)
Insert Into Movimentacao Values(8,’E’,10)
Insert Into Movimentacao Values(9,’E’,15)
Insert Into Movimentacao Values(1,’E’,5)
Insert Into Movimentacao Values(3,’E’,22)
Insert Into Movimentacao Values(22,’E’,10)

–Fazendo lançamentos de saída
Insert Into Movimentacao Values(2,’S’,8)
Insert Into Movimentacao Values(2,’S’,5)
Insert Into Movimentacao Values(2,’S’,3)
Insert Into Movimentacao Values(2,’S’,2)
Insert Into Movimentacao Values(2,’S’,1)
Insert Into Movimentacao Values(8,’S’,8)
Insert Into Movimentacao Values(8,’S’,3)
Insert Into Movimentacao Values(9,’S’,5)
Insert Into Movimentacao Values(1,’S’,3)
Insert Into Movimentacao Values(3,’S’,2)
Insert Into Movimentacao Values(22,’S’,1)


–Verificando o valor atual do saldo movimentado

select * from NovosProdutos
select * from Movimentacao

Fonte e Direitos

 

“Array” no SQL Server

Ola galera, segue uma pequena dica de manipulação de resultados (“Array”) no SQL Server, abaixo mostrarei como surgiu a necessidade…

Tive essa semana a seguinte conversa com o grande amigo (Dentinho)

(Dentinho) Como faço um Array no SQL Server?

(Alex Souza) Cara, este comando especificamente não existe, mas tem jeito de fazer algo parecido

(Dentinho) No POSTGRES faço muito rápido com o comando ARRAY.

(Alex Souza) Me diga ai o que você esta precisando…

(Dentinho) Tenho uma Consulta que retorna as seguintes informações:

1

(Dentinho) Eu consigo trazer estes dados em uma unica linha separado por virgula? Desde ontem tento e não consigo…

(Dentinho) Exemplo: 123, 124, 125…

(Alex Souza) Quanto tempo você me dá para arrumar uma solução?

(Dentinho) 4 minutos

(Alex Souza) Certo, dá tempo até tomar um café antes… kkkk

… 4 minutos depois…

(Alex Souza) Pronto, a solução esta dada, vamos montar uma função (FuArrayNFTitulo) que retornará o seguinte:

2

… Segue abaixo a montagem do cenário e a função:  [FuArrayNFTitulo]

———————————
— Montagem do Cenário —
———————————

— Criando o Banco de Dados
CREATE DATABASE TestesBlog;

USE TestesBlog

— Criando a tabela
CREATE TABLE NF_Titulos (
NumNF int
, NumTitulo int
);

— Cada NF pode ter vários títulos (Populando…)
INSERT INTO NF_Titulos VALUES (111, 123) , (111, 124), (111, 125), (111, 126), (112, 127), (112, 128)

— Consulta que retorna os títulos em linhas (o problema do Dentinho…)
Select NumTitulo From NF_Titulos WHERE NumNF = 111

— Montamos a seguinte função: FuArrayNFTitulo que tem como entrada a NF e retorna os Títulos relacionados a esta NF
CREATE FUNCTION [dbo].[FuArrayNFTitulo] (@NumTit INT) 
RETURNS VARCHAR(MAX)
AS

BEGIN

DECLARE @Hist VARCHAR(MAX)
SET @Hist = ”

SELECT @Hist = @Hist + CASE WHEN @Hist = ” THEN ” ELSE ‘, ‘ END + Convert(varchar, NumTitulo)
FROM NF_Titulos
WHERE NumNF = @NumTit

RETURN @Hist

END

———————————————-
relogio-um-escravo-do-tempo

— Resultado da função (SOLUÇÃO) —
———————————————-

SELECT Resp = dbo.[FuArrayNFTitulo] (111)
Abraço a todos!
Valeu Dentinho…


Vejam também:

Matrizes no SQL Server 2005 ( Parte I | Parte II | Parte III )

{ Alex Souza }

Desafio de segurança no MSSQL … Você consegue?

Achei este desafio proposto pelo Fabiano muito interessante e aconselho que dêem uma olhada…

Solução desafio de segurança no SQL Server

Vejam também:
Segurança no SQL Server

O Plano B

Fonte e direitos: RENATO CESAR MONTEIRO

Todos nós recordamos daquele trágico dia 11 de setembro de 2001 – o dia em que as torres gêmeas de Nova York vieram abaixo pelas mãos dos terroristas que jogaram nelas dois aviões Boeing 767 que haviam sido sequestrados. Sem dúvida uma das maiores tragédias da história moderna. A partir dali, tudo mudou nos Estados Unidos: as leis de imigração ficaram mais rígidas, o controle sobre o tráfego aéreo aumentou,foi deflagrada uma verdadeira guerra contra o terrorismo que, mui tas vezes, passou por cima dos direitos humanos. Foram ordenadas execuções sumárias, mui tas vezes sem provas criminais e contrariando as leis internacionais. Mas a partir daquele dia também mudou a história da Tecnologia da Informação.

Todos sabemos que o armazenamento de informações e documentos são fundamentais para a continuidade de qualquer negócio. Os meios de armazenamento atuais incluem, quase que na maioria das empresas, backup em fitas magnéticas, em servidores remotos ou sites de backup (existem os modelos co-location, que nada mais são do que data centers independentes que oferecem hospedagem compartilhada para mais de uma organização). As boas práticas sugeridas pela ITIL (Information Technology Infrastructure Library, modelo britânico utilizado em muitas empresas, cito, por exemplo, a Gerdau e a Stefanini IT Solutions) recomendam que as mídias de backup de cada empresa sejam armazenadas em local seguro e nunca no mesmo prédio-sede. Em caso de destruição total do patrimônio físico de uma empresa (o que pode ser recuperado através de seguro) , estes arquivos poderão ser restaurados.

Naturalmente, o monitoramento destes backups através do uso de software apropriado, bem como a análise de logs e testes de restore periódicos também são recomendáveis. Acontece que muitas empresas que operavam nas torres gêmeas de NY possuíam seus backups na torre vizinha. Isso mesmo: fitas de backup, servidores de backup e links de contingência ficavam no outro prédio. Ninguém imaginava que as duas torres desabariam. Ali, caro leitor, muitas empresas vieram à falência por não terem mais o histórico de seus clientes ou simplesmente por não poderem comprovar dívidas e créditos: todo o histórico digital estava perdido!

Desde então a grande maioria dos bons profissionais de Tecnologia da Informação vêm buscando especializar-se e implementar em suas empresas as práticas de continuidade de negócio mais modernas, atualizadas a partir daquela tragédia. Isso não se restringe ao armazenamento de dados, mas tem sido levado em conta, também, o capital intelectual. Não me surpreende o fato dos dois diretores de uma famosa empresa de consultoria e treinamento aqui de Porto Alegre viajarem periodicamente em voos diferentes. Eles sabem que detém grande conhecimento sobre a sua empresa e que o falecimento de ambos seria extremamente prejudicial para a continuidade do negócio. Logo, se acontecer a queda de um dos aviões, viria a falecer somente um dos diretores… Parece loucura, mas muitas empresas adotam esta prática. Apenas não admitem publicamente. Se refletirmos um pouco chegaremos a uma conclusão semelhante no que diz respeito ao conhecimento, à patente do software. O monopólio da informação, o não compartilhamento do código pode gerar a perda irreversível de grandes ideias. Quantos grandes softwares foram descontinuados simplesmente porque o código-fonte não foi aberto e, assim, não foi dada a continuidade por parte de outros desenvolvedores?

O “plano B”, caro leitor, resume-se a uma única palavra: continuidade. Isso pode ser implementado a partir de um simples nobreak até um si te em co-location.
Cabe aos profissionais de Tecnologia, ir além e nos anteciparmos aos imprevistos

Vejam também:
Missão Crítica: conceitos básicos

Recriando as databases de sistema (SQL Server 2017 / 2005)

Recriar bancos de dados do sistema (SQL Server 2017)

Pode ocorrer situações que precisamos recriar as databases de sistema, tais como:
– arquivo master corrompido e sem backup.
– alteração do collation da instancia

Implicações:
– todos os bancos de dados deverão ser restaurados ou atachados.
– logins terão que ser recriados
– jobs (msdb)
– planos de manutenção (msdb)

Como fazer no SQL Server 2005:
Executar os instaladores do SQL Server, no meu caso os instaladores se encontra em: D:\Servers\setup.exe

Exemplo:
C:\> start /wait D:\Servers\setup.exe /qb INSTANCENAME=SQL2005 REINSTALL=SQL_Engine REBUILDDATABASE=1 SAPWD=12345

Onde:
/qb – De forma Visual
SAPWD – Alterar a senha do sa

Dica:
– Sempre faça backup dos seguintes bancos de dados do sistema:
– master
– msdb (jobs, planos de manutenção)

{ Alex Souza }

Particionamento de Tabelas com o SQL Server 2005 / 2008 / 2008 R2

O particionamento de um banco de dados melhora o desempenho e simplifica a manutenção. Ao dividir uma tabela grande em tabelas individuais menores, as consultas que acessam somente uma fração dos dados serão executadas maior rapidez, já que haverá menos dados a escanear. As tarefas de manutenção, como reconstruir índices ou fazer backup de uma tabela, podem ser executadas mais rapidamente.

Achei estes vídeos, do Marcos Rosa, bastante interessantes que falam de particionamento de tabelas com o SQL Server 2005.
Parte 1

Parte 2

Books Online para o SQL Server 2008 (Pt-BR)

Fonte: http://canaldba.blogspot.com/

Vejam também:

GERENCIANDO TABELAS PARTICIONADAS (Vídeo)

Criando Funções e Esquemas de Particionamento de Dados para oferecer possíveis ganhos desempenho e distribuição de dados no Microsoft SQL Server 2008 e Microsoft SQL Server 2008 R2

PARTITION FUNCTION (Particionamento de Tabelas)

Database Snapshot

— Um instantâneo do banco de dados (Database Snapshot) é uma exibição somente leitura e estática de um banco de dados.

–Exemplo: Criando um Database Snapshot de um Banco de Dados chamado: DBMirroring

CREATE DATABASE DBMirroring_Snapshot
ON ( NAME=’DBMirroring’ — Logical Name do Banco de Dados
,       FILENAME=’E:\Arquivos\Dados\DBMirroring_snapshot.ds’) — Diretorio onde irá salvar o arquivo
AS SNAPSHOT OF DBMirroring; — Nome do Banco de Dados


— Usando o Database Snapshot
Use DBMirroring_Snapshot;

— Deletando um Database Snapshot
DROP DATABASE DBMirroring_Snapshot;


Vejam também:
Entenda o Database Snapshot!

Database Snapshots – O que são? Para que servem? Exemplos…

Implementando Database Snapshot

Instantâneos de banco de dados (BOL)

Casos do Dia a Dia: O tamanho do arquivo de uma base Snapshot pode te enganar!

{ Alex Souza }

Transações no SQL Server (Commit e RollBack Transaction)

Transação é um conjunto de procedimentos que é executado num banco de dados, que para o usuário é visto como uma única ação. Ou seja, deve garantir a Atomicidade (Ou executa todos os passos corretamente ou não executa em caso de falha em algum dos passos)



Fragmentação do Transaction LOG

Scripts webcast Fragmentação do TLog (acima…)

 


Vejam também:

Transaction Log – Melhores Práticas

O Transaction Log de uma transação é liberado quando dou um rollback?

Gerenciamento de Transação

Write-Ahead Logging (WAL)

Tipo de Transações no SQL Server

Fragmentação do Transaction Log – Parte I

Fragmentação do Transaction Log – Parte II

Analisando seu Log File ( Parte 01 | Parte 02 | Parte 03 )


{
 Alex Souza }

Plano de Execução no SQL Server (via TSQL)

USE DBTeste;
GO
SET SHOWPLAN_XML ON;
GO
 
— Execute a Query que deseja analisar
SELECT * FROM    TbCidades
GO
SET SHOWPLAN_XML OFF;

/* Salve o Resultado como por exemplo:
   > PlanoExecucao_TbCidades.sqlplan
*/
Vejam também:
Operadores dos Planos de Execução
Parte2

Vejam também:
Ferramenta: SQL Sentry Plan Explorer (free)


{
 Alex Souz@ }