Material de Apoio – Outubro 2018


Bom dia, bom dia, bom dia…

Tudo bem? Estamos no mês de outubro, as eleições terminaram, e os brasileiros escolheram os seus representantes, passado estes últimos acontecimentos, começamos a direcionar nossos esforços e pensamentos nos acontecimentos de final de ano, aquele momento tão esperado por todos esta mais uma vez se aproximando e nossos sonhos de um futuro melhor começam novamente a serem renovados.

Como de costume, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o quarto do ano de 2018 e de número 159 no total desta sessão.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts  catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados exclusivamente ao recurso de Linked Server, sendo este, uma funcionalidade existente a muitos anos no Microsoft SQL Server, que nos permite de uma forma bastante simples, mas não muito prática e performática estabelecer um canal de acesso entre fontes de dados distintas, possibilitando em tempo real que o próprio SQL Server possa acessar e manipular dados entre estas fontes, bem como, armazenar estes mesmos dados internamente.

Segue abaixo a relação de temas relacionados ao uso Linked Server:

  • Access;
  • Active Directory;
  • Excel;
  • Query Dinâmica;
  • Remote Servers;
  • Senhas;
  • sp_addlinkedserver;
  • sp_addlinkedsrvlogin;
  • sp_droplinkedsrvlogin;
  • sp_dropserver;
  • Stored Procedure;
  • sys.linked_logins;
  • sys.server_principals;
  • sys.servers;
  • Transações; e
  • Variáveis.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Outubro 2018 – Linked Server – Acessando – Active Directory via Linked Server.sql

2 – Material de Apoio – Outubro 2018 – Linked Server – Configurando – Linked Server entre Access 2010 e SQL Server 2008.sql

3 – Material de Apoio – Outubro 2018 – Linked Server – Criando – Linked Server entre Access e Banco de Dados com Senha.sql

4 – Material de Apoio – Outubro 2018 – Linked Server – Criando – Linked Server para acesso ao Excel.sql

5 – Material de Apoio – Outubro 2018 – Linked Server – Trabalhando com Transaçoes no Linked Server.sql

6 – Material de Apoio – Outubro 2018 – Linked Server – Obtendo informacoes sobre o Linked Server.sql

7 – Material de Apoio – Outubro 2018 – Linked Server – Trabalhando com Query Dinâmica em conjunto com Linked Server e Variável.sql

8 – Material de Apoio – Outubro 2018 – Linked Server – Trabalhando com Linked Server e seus recursos básicos.sql

9 – Material de Apoio – Outubro 2018 – Linked Server – Realizando um update através de uma conexão via Linked Server.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/08/14/material-de-apoio-agosto-2018/

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de dezembro, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocada ao nosso redor.

Um forte abraço, muita saúde, sucesso e nos encontramos no final do ano (que na verdade já chegou)….

Material de Apoio – Agosto 2018


Salve, galera, boa tarde.

Tudo bem? Estamos no mês de agosto, volta as aulas, aquela correria do dia a dia da vida acadêmica, profissional e familiar, espero que você esteja conseguindo dar conta de toda esta “loucura” que vivemos rotineiramente.

Como de costume, estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o quarto do ano de 2018 e de número 158 no total desta sessão.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts  catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados exclusivamente ao recurso de Trigger, sendo este, algo bastante questionável e muito criticado pelos profissionais de bancos de dados e desenvolvedores, mas que aplicado de uma forma organizado e pensando sempre no conceito transacional de processamento linha á linha, poderá se tornar um ótima solução de automação de dados.

Segue abaixo a relação de temas relacionados ao uso de Triggers:

  • Auditoria;
  • Bloqueando a criação de tabelas com nomes específicos;
  • Bulk Insert;
  • Cálculo de parcelamento de valores;
  • Comando Delete;
  • Evitando a Duplicação de registros;
  • Exclusão de Tabelas;
  • Instead Of;
  • Integração de dados entre bancos de dados diferentes;
  • Logon All Server; e
  • Trigger Condicional.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .docx ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Agosto – 2018 – Auditoria – Trigger All Server – Create Database + Drop Database.sql

2 – Material de Apoio – Agosto – 2018 – Trigger – Parcelamento de Valores + Cálculo Data Pagamento

3 – Material de Apoio – Agosto – 2018 – Descobrindo se o Trigger é Insert, Update ou Delete

4 – Material de Apoio – Agosto – 2018 – Habilitando e Desabilitando Trigger

5 – Material de Apoio – Agosto – 2018 – Implementando Trigger entre Bancos de Dados diferentes no mesmo Servidor

6 – Material de Apoio – Agosto – 2018 – Bloqueando a criação de tabelas com um determinado nome

7 – Material de Apoio – Agosto – 2018 – Evitando duplicidade de registros

8 – Material de Apoio – Agosto – 2018 – Trigger em conjunto com Bulk Insert

9 – Material de Apoio – Agosto – 2018 – Trigger for Logon All Sever

10 – Material de Apoio – Agosto – 2018 – Trigger On Database – Drop Table

11 – Material de Apoio – Agosto – 2018 – Trigger Condicional

12 – Material de Apoio – Agosto – 2018 – Trigger Instead Of

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/06/19/material-de-apoio-junho-2018/

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-2018/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de outubro, até lá, continue aproveitando cada momento da sua vida, desfrutando com muita sabedoria os momentos de galeria e também os desafios que são colocada ao nosso redor.

Um forte abraço, muita saúde, sucesso e vamos em frente…

Material de Apoio – Junho 2018


Olá, boa tarde.

Tudo bem? E ai esta curtindo a Copa do Mundo de Futebol da Rússia? Posso dizer tranquilamente que eu estou curtindo muito todos os jogos e informações possíveis de serem acompanhadas.

Estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a torná-lo ainda melhor no decorrer do tempo com a sua participação.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o terceiro do ano de 2018 e de número 157 no total desta sessão.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts  catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Acessos de Usuário;
  • Backup;
  • CheckList;
  • Comando Create Procedure;
  • Comando Declare;
  • Database Backup;
  • Disponibilidade;
  • DMV sys.dm_db_index_usage_stats;
  • DMV Sys.dm_os_sys_info;
  • Dymanic Management View;
  • Free Disk Space;
  • Função DateAdd;
  • Função Month;
  • Heap Table;
  • Índices Clustered; Reinicialização de Servidores;
  • Índices;
  • Junção de Tabelas;
  • Leitura e Escrita; System Stored Procedure;
  • Logins;
  • Set DateFirst;
  • Set Language;
  • Set NoCount;
  • System Stored Procedure SP_MSForeachTable;
  • System Table sys.allocation_units; System Table sys.indexes;
  • System Table sys.partitions;
  • System Table sys.schemas;
  • System Table sys.tables;
  • Usuários; e
  • Variáveis.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .doc ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Junho – 2018 – Determine Free Space Prior to SQL Server Backup.sql

2 – Material de Apoio – Junho – 2018 – DMV – Sys.dm_os_sys_info.sql – Identificando o último restart realizado na instância ou servidor.sql

3 – Material de Apoio – Junho – 2018 – Identificando a relação de Heap Tables.sql

4 – Material de Apoio – Junho – 2018 – Identificando a última segunda – feira e o último dia do mês.sql

5 – Material de Apoio – Junho – 2018 – Identificando o último usuário que acesso a tabela.sql

6 – Material de Apoio – Junho – 2018 – Obtendo a relação de últimos acessos de leitura e escrita por banco de dados.sql

7 – Material de Apoio – Junho – 2018 – SP_msforeachtable – Criando índices clustered em todas as tabelas através de uma coluna específica.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/04/05/material-de-apoio-abril-2018/

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-2018/

https://pedrogalvaojunior.wordpress.com/2017/11/04/material-de-apoio-novembro-2017/

https://pedrogalvaojunior.wordpress.com/2017/08/08/material-de-apoio-agosto-2017/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de agosto, até lá continue curtindo sua vida, aproveite este grande momento de confraternização mundial que a Copa do Mundo de Futebol nos proporciona a cada quatro anos.

Um forte abraço, muita saúde, sucesso e vamos em frente…

Short Scripts – Maio 2018


Olá Mundo, bom dia, comunidade….

Tudo bem? E ai como passaram os últimos meses?

Pergunto isso, devido ao post anterior desta sessão ter sido publicado no mês de fevereiro, posso imaginar que neste intervalo de tempo nossas vidas apresentaram inúmeras situações, espero que todas possam ter sido dentro do possível boas, assim como a minha, e se caso venha a existir algo mais espinhoso, que você possa ter superado.

Seguindo em frente, que alegria poder te encontrar em mais um post da sessão Short Scripts, uma das sessões mais recentes do meu blog que esta alçando a marca de 33 posts publicados trimestralmente.

Mantendo a tradição estou retornando com mais um conjunto de “pequenos” scripts catalogados e armazenados em minha biblioteca pessoal de códigos relacionados ao Microsoft SQL Server e sua fantástica linguagem de desenvolvimento Transact-SQL.

Como promessa é dívida e deve ser cumprida “ou melhor” compartilhada, estou compartilhando a minha feita a exatos três meses no final do último post da sessão Short Scripts, hoje publicando mais um conjunto de scripts adicionados atualmente na minha biblioteca particular de códigos e exemplos.

O post de hoje

Como de costume selecionei os principais scripts armazenados recentemente na minha biblioteca de códigos, que apresentam os seguintes assuntos:

  • Acesso de usuário a tabelas;
  • Acesso e Leitura a Banco de dados;
  • Contas de Execução;
  • Descrição de Colunas;
  • DMV – Sys.dm_os_memory_clerks;
  • DMV – Sys.dm_server_services;
  • Ident_Current;
  • Leitura de Log;
  • Memória;
  • Memory Cache Entries;
  • Memory Clerks;
  • Multipage Allocators Statistic
  • OS Threads;
  • Processos em execução;
  • Scope_Ident;
  • Serviços do SQL Server;
  • SessioID;
  • System Identity Variable; e
  • XP_ReadErrorLog.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Maio 2018 . Vale ressaltar que todos os scripts publicados nesta sessão foram devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas.

Fique a vontade para compartilhar, comentar e melhorar cada um destes códigos.

Short Scripts

— Short Script 1  – Encerramento processos que apresentam várias horas ou longo tempo de execução  —
SET NOCOUNT ON
DECLARE @spid SMALLINT, @spidString VARCHAR(12)

DECLARE spidCursor CURSOR
FOR SELECT spid
FROM master.sys.sysprocesses
WHERE last_batch < DATEADD(hh, -8, GETDATE()) AND spid > 50 — Change 8 to any other value for hours AND spid > 50 — for user spid
FOR READ ONLY
OPEN spidCursor
FETCH NEXT FROM spidCursor INTO @spid

SELECT ‘Killed spid(s) – ‘
WHILE (@@fetch_status = 0)
AND (@@error = 0)
BEGIN
SELECT @spidString = CONVERT(VARCHAR(12), @spid)
EXEC (‘kill ‘ + @spidString)
SELECT @spid
FETCH NEXT FROM spidCursor INTO @spid
END

CLOSE spidCursor
DEALLOCATE spidCursor
SET NOCOUNT OFF

— Short Script 2 –  Identificando – Memory Cache Entries —
WITH memory_cache_entries
AS
(
SELECT
name AS entry_name,
[type],
in_use_count,
pages_allocated_count,
CAST(entry_data AS XML) AS entry_data
FROM sys.dm_os_memory_cache_entries(nolock)
WHERE type = ‘USERSTORE_TOKENPERM’
),
memory_cache_entries_details
AS
(
SELECT
entry_data.value(‘(/entry/@class)[1]’, ‘bigint’) AS class,
entry_data.value(‘(/entry/@subclass)[1]’, ‘int’) AS subclass,
entry_data.value(‘(/entry/@name)[1]’, ‘varchar(100)’) AS token_name,
pages_allocated_count,
in_use_count
FROM memory_cache_entries
)
SELECT
class,
subclass,
token_name,
COUNT(*) AS nb_entries
FROM memory_cache_entries_details
GROUP BY token_name, class, subclass
ORDER BY nb_entries DESC;

— Short Script 3 – Obtendo a relação de últimos acessos de leitura e escrita por banco de dados —

;WITH myCTE AS
(
SELECT
DB_NAME(database_id) AS TheDatabase,
last_user_seek,
last_user_scan,
last_user_lookup,
last_user_update
FROM sys.dm_db_index_usage_stats
)
SELECT
ServerRestartedDate = (SELECT CREATE_DATE FROM sys.databases where name=’tempdb’),
x.TheDatabase,
MAX(x.last_read) AS last_read,
MAX(x.last_write) AS last_write
FROM
(
SELECT TheDatabase,last_user_seek AS last_read, NULL AS last_write FROM myCTE
UNION ALL
SELECT TheDatabase,last_user_scan, NULL FROM myCTE
UNION ALL
SELECT TheDatabase,last_user_lookup, NULL FROM myCTE
UNION ALL
SELECT TheDatabase,NULL, last_user_update FROM myCTE
) AS x

GROUP BY TheDatabase
ORDER BY TheDatabase

— Short Script 4 – Identificando e analisando as diferenças entre Ident_Current, Scope_Identity e Variável de Sistema Identity —
USE AdventureWorks2016;
Go

CREATE TABLE t6(id int IDENTITY);
CREATE TABLE t7(id int IDENTITY(100,1));
Go

CREATE TRIGGER t6ins ON t6 FOR INSERT
AS
BEGIN
INSERT t7 DEFAULT VALUES
END;
Go

SELECT id FROM t6;
SELECT id FROM t7;

— Do the following in Session 1.
INSERT t6 DEFAULT VALUES;
SELECT @@IDENTITY;
/*Returns the value 100.*/

SELECT SCOPE_IDENTITY();
/* Returns the value 1. This was inserted by the
INSERT statement two statements before this query.*/

SELECT IDENT_CURRENT(‘t7’);
/* Returns value inserted into t7, that is in the trigger.*/

SELECT IDENT_CURRENT(‘t6’);
/* Returns value inserted into t6. This was the INSERT statement four statements before this query.*/

— Do the following in Session 2.
SELECT @@IDENTITY;
/* Returns NULL because there has been no INSERT action
up to this point in this session.*/

SELECT SCOPE_IDENTITY();
/* Returns NULL because there has been no INSERT action
up to this point in this scope in this session.*/

SELECT IDENT_CURRENT(‘t7’);
/* Returns the last value inserted into t7.*/

— Short Script 5 – Identificando a SessionID e suas respectivas OS Threads —
SELECT osTask.session_id,
osThreads.os_thread_id,
osTask.scheduler_id,
osTask.task_state
FROM sys.dm_os_tasks AS osTask INNER JOIN sys.dm_os_threads AS osThreads
ON osTask.worker_address = osThreads.worker_address
WHERE osTask.session_id IS NOT NULL
ORDER BY osTask.session_id;
Go

— Short Script 6 – Identificando o último usuário que acesso a tabela —
SELECT DB_NAME(ius.[database_id]) AS [Database],
                 OBJECT_NAME(ius.[object_id]) AS [TableName],
                 MAX(ius.[last_user_lookup]) AS [last_user_lookup],
                 MAX(ius.[last_user_scan]) AS [last_user_scan],
                 MAX(ius.[last_user_seek]) AS [last_user_seek] FROM sys.dm_db_index_usage_stats AS ius
WHERE ius.[database_id] = DB_ID()
AND ius.[object_id] = OBJECT_ID(‘[PlayerAllData]’)
GROUP BY ius.[database_id], ius.[object_id]
Go

— Short Script 7 – Obtendo informações sobre a descrição de uma coluna —
declare @ColumnName nvarchar(300),
@TableName nvarchar(300);

Set @ColumnName= N’…’;
Set @TableName= N’…’;

Select st.name [Table],
sc.name [Column],
sep.value [Description]
from sys.tables st inner join sys.columns sc
on st.object_id = sc.object_id
left join sys.extended_properties sep
on st.object_id = sep.major_id
and sc.column_id = sep.minor_id
and sep.name = ‘MS_Description’
Where st.name = @TableName
And sc.name = @ColumnName
Go

— Short Script 8 – XP_ReadErrorLog – Identificando a porta padrão do SQL Server —
USE MASTER
Go

XP_readerrorlog 0, 1, N’Server is listening on’
Go

— Short Script 9 –  Utilizando – sys.dm_os_memory_clerks – Multipage Allocators Statistic —
Select name AS clerk_name, memory_node_id,
                 sum(single_pages_kb) / 1024 as single_page_total_size_mb,
                 sum(multi_pages_kb) / 1024 as multi_page_total_size_mb,
                 sum(awe_allocated_kb) / 1024 as awe_allocaed_size_MB
From sys.dm_os_memory_clerks(nolock)
Where memory_node_id = 64
Group by memory_node_id, name
Having SUM(multi_pages_kb) > 0
Order BY sum(single_pages_kb) + sum(multi_pages_kb) +
sum(awe_allocated_kb) DESC
Go

— Short Script 10 –  Utilizando – sys.dm_server_services – Identificando a conta que esta executando os serviços do SQL Server —
Select  servicename,
startup_type_desc,
status_desc,
               last_startup_time,
               service_account,
               is_clustered,
               cluster_nodename,
               filename,
               startup_type,
               status,
               process_id
From sys.dm_server_services
Go

Missão mais que cumprida! Uma nova relação de short scripts acaba de ser compartilhada, mesmo sendo denominados short entre aspas “pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.


Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/02/19/short-scripts-fevereiro-2018-transaction-log/

https://pedrogalvaojunior.wordpress.com/2017/12/09/short-scripts-dezembro-2017/

https://pedrogalvaojunior.wordpress.com/2017/09/16/short-scripts-setembro-2017/

https://pedrogalvaojunior.wordpress.com/2017/06/08/short-scripts-junho-2017/

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença ao meu blog, desejo e espero que você possa ter encontrado algo que lhe ajudou.

Volte sempre, nos encontraremos mais uma vez na sessão Short Scripts no post do mês de agosto de 2018.

Abraços…

Dica do Mês – SQL Operations Studio – View as Chart


Olá, amantes de banco de dados e profissionais de tecnologia.

Bom dia, bom dia, bom dia….. Tudo bem? Que bom te encontrar por aqui mais uma vez, seja bem, volte sempre. Este é mais um post da sessão Dica do Mês, sessão dedicada a compartilhar bimestralmente dicas, novidades, curiosidades e demais informações relacionadas ao Microsoft SQL Server, Banco de Dados e Tecnologias de Banco de Dados.

No post de hoje, quero dividir com você um recurso que conheci recentemente adicionado ao novo SQL Operations Studio, ferramenta que a Microsoft esta trabalhando a todo vapor para se tornar muito em breve um produto confiável, prático e robusto, da mesma maneira que aconteceu com o Management Studio (“isso já faz um tempinho, lá em 2005”), e principalmente multiplataforma(um produto interoperável).

Se por acaso você ainda não conhece esta nova ferramenta da Microsoft, fique calmo, seu primeiro preview foi lançado no final de 2017, e caso você queria conhecer um pouco mais sobre este novo produto, acesse: https://docs.microsoft.com/pt-br/sql/sql-operations-studio/what-is?view=sql-server-2017.

 

Falando um pouco mais sobre o post de hoje, normalmente quando executamos uma query no Microsoft SQL Server Management Studio, temos a possibilidade de apresentar o retorno de dados em tela no formato de tabela, texto ou se quisermos salvar em um arquivo texto, agora no SQL Operations Studio, temos algumas outras formas de apresentar ou salvar nosso retorno de dados, dentre elas a que eu mais gostei e acredito que você também vai gostar é conhecida como View as Chart (Visualizar como gráfico).

Como assim visualizar como gráfico? É isso mesmo, que você esta pensando, visualizar o resultado da sua query em alguns modelos predefinidos de gráfico em tempo real. Olha que fiquei de queijo caído com este recurso.

E ai, esta curioso em saber um pouco mais sobre esta nova forma de apresentar seus dados? Eu estou, e não vejo a hora de poder dividir com você um pouco deste recurso.

Então, vamos em frente, vou tentar mitigar a sua curiosidade e ao mesmo também satisfazer os meus objetivos. Sendo assim, seja bem vindo ao post – Dica do Mês – SQL Operations Studio – View as Chart.

Tenho a certeza visualizar seus dados em forma de gráfico, vai lhe ajudar muito nos momentos de análise e tomada de decisão.


Introdução

Lançado em novembro de 2017, o SQL Operations Studio, possui algumas missões um pouco indigestas (na minha opinião), mas que podem ser alcançadas, dentre elas:

  1. Se tornar um produto conhecido;
  2. Ser reconhecido como um produto independente e multiplataforma;
  3. Ser utilizado com uma ferramenta de apoio ao atual Management Studio;
  4. Não ser rotulado ou visto como o substituto do Management Studio para Windows; e
  5. Ser utilizado em ambientes Linux e Mac.

Mesmo com esta pequena relação de missões a serem cumprida, a Microsoft esta trabalhando de forma árdua a realmente lançar uma versão final do produto o mais breve possível (eu mesmo esperei um pouco mais para instalar o produto na minha máquina).

Mas, vamos em frente, dentro as novidades e melhorias adicionadas na última preview lançada do SQL Operations Studio (em 28/03/2018), aquela que mais me chamou a atenção, foi justamente a introdução do botão View as Chart, sendo este visível logo após o processamento e apresentação do resultado de um query.

Se você já estou utilizando este produto, talvez não tenha ainda percebido a presença deste ou outros botões que surgem em nossa tela ao lado da result as table que exibe as linhas de dados processadas, pois bem, a Figura 1 abaixo ilustra este e os demais botões:

Figura 1 – Apresentação dos botões View as Chart na guia de resultados exibida pelo SQL Operations Studio.

Agora eu acredito que você vai conseguir encontrar mais facilmente estes botões logo após processar suas querys no SQL Operations Studio.

Vamos avançar mais um pouco…..

View as Chart

Ao imaginar a possibilidade de apresentar nosso retorno de dados em tela, tendo como base, formatos predefinidos de gráficos é algo que nos permite estabelecer uma série de palavras do momento, dentre elas: Análise de Dados, Tomada de Decisão, Modelagem de Negócios, Mineração de Dados, Business Intelligence, enfim… possibilidade de tentar rotular um resultado apresentado como um gráfico, os fascinados por administração e gestão vão adorar. Sinceramente falando, não vejo que este recurso possa ser rotulado para todas as possíveis áreas, mas em especial uma dentre as mais diversas podemos, sendo ela: Análise de Dados.

Apresentar um conjunto de dados no formato de gráfico, com certeza é algo visualmente falando mais atrativo, bonito e didático do que simplesmente apresentar um monto de valores em uma tabela com colunas que muitas vezes não conseguir expressar ou transmitir seu significado.

Analisar um ou mais dados, é uma atividade diferencial para qualquer profissional da área de tecnologia, principalmente aqueles que possuem a ingrata missão de tentar através do números, símbolos e indicadores orientar seus clientes, empresas e parceiros em momento chaves para tomada de decisão, por outro lado ter a possibilidade de simular situações com base no processamento em tempo real de dados coletados ao longo de tempo e ver o que pode acontecer caso algo venha e mudar pode sim ser um grande “pulo do gato”.

Ao meu ver é justamente isso que podemos tentar adjetivar este recurso adicionado ao SQL Operations Studio, a capacidade de proporcionar um análise de dados para os profissionais de tecnologia, dentre eles: Desenvolvedores, Programadores e Administradores de Bancos de dados, que podem em tempo real realizar possíveis simulações e testes com seus dados nem necessitar utilizar ferramentas específicas para esta atividade.

Vamos em frente que atrás vem o DBA correndo (kkkkk)…..

Exibindo um Chart

Para que possamos realizar nossas práticas, vou utilizar o mesmo ambiente que venho trabalhando nos meus últimos post, mais especificamente o banco de dados utilizado no jogo de videogame Fifa 2018 recentemente compartilhado no meu blog.

Pois bem, caso você não deseje fazer o download do banco de dados, nas práticas que vamos realizar neste post, estou compartilhando um arquivo no formato JSON que justamente apresenta a massa de dados específica que iremos utilizar, além disso, o arquivo já esta pronto para você realizar o processo de importação caso esteja utilizando o Microsoft SQL Server 2016 ou superior. Faça o download do arquivo JSON clicando aqui.

Importante: Vale ressaltar que por questões de segurança a plataforma WordPress.com não permite upload de arquivo com extensão .json, sendo assim, foi adicionado ao final do arquivo a extensão .doc, após realizar o download basta remover esta extensão o final do nome do arquivo mantendo a extensão .json.

Caminhando mais um pouquinho….

Vou deduzir que você conseguiu realizar o download do arquivo, em seguida acessou seu Microsoft SQL Server 2016 ou 2017 e importou este conjunto de dados para dentro de um específico banco de dados, show de bola, sucesso, vamos em frente.

Agora com este dados disponíveis para serem acessados, podemos fazer uso do recurso View as Chart, para isso acesse o SQL Operations Studio, conecte-se em seu banco de dados, abra uma nova query e execute o Bloco de Código 1 apresentado abaixo, sendo esta a query base que utilizaremos para proporcionar a criação e execução de nossos gráficos:

— Bloco de Código 1 —

Select Top (50) Name,
Age,
Nationality,
Overall,
Potential
From PlayerPersonalData
Order By Overall Desc, Potential DESC
Go

Observe a simplicidade da query que utilizaremos, não se espante é isso mesmo, algo bastante simples para trabalhar com 50 linhas de registros armazenadas em um tabela denominada PlayerPersonalData.

Logo após a execução do Bloco de Código 1 apresentando anteriormente, o SQL Operations Studio deve ter retornado na sua tela um conjunto de dados similar ao apresentado na Figura 2 a seguir:

Figura 2 – Relação de dados apresentados após o processamento do Bloco de Código 1.

Muito bem, observe com atenção a Figura 2, veja que os botões apresentados na respectiva ordem:

  • Save as CSV;
  • Save as JSON(o arquivo json aqui compartilhado, foi criado através deste botão);
  • Save as Excel; e
  • View as Chart, foram habilitados e encontram-se disponíveis para uso, sendo o último botão o qual iremos utilizar para gerar nossos gráficos, sendo assim, clique nele.

Após clicar no botão View as Chart, automaticamente o SQL Operations Studio apresenta um primeiro modelo de gráfico em barras horizontais(HorizontalBar), conforme apresenta a Figura 3 a seguir:

Figura 3 – Gráfico padrão criado no modelo predefinido HorizontalBar.

Como eu havia destacado no início deste post, o SQL Operations Studio através do recurso View as Chart, apresenta um conjunto de gráficos predefinidos que podem ser aplicados ou não dependendo do tipo de retorno de dados apresentado por cada query, a Figura 4 apresentado a seguir, ilustra o conjunto de modelo de gráficos predefinidos independente do conjunto de dados processados pelo Bloco de Código 1:

Figura 4 – Relação de modelos predefinidos existentes no recurso View as Chart.

Legal, temos nossa massa de dados, já sabemos a relação de possíveis modelos de gráficos, o próximo passo é começar a brincar com este recurso em conjunto com suas querys criando novos gráficos, como forma de demonstração de algumas possibilidades, apresento abaixo algumas figuras que ilustram as diversidades de retornos de dados através do recurso View as Chart.

Exemplos de Gráficos

A seguir apresento em sua respectiva ordem as Figuras 5, 6, 7 e 8, que ilustram os modelos de gráficos: Line, Bar e PIE, note que todos os gráficos apresentam uma legenda, como também, podem ser exibidos na posição horizontal e vertical, e ao passar com o mouse em cima da área do gráfico, um hint é apresentado destacando a área e seus respectivos dados:

Figura 5 – Modelo de Gráfico Line.

Figura 6 – Modelo de Gráfico Bar.

Observação: Após exibir um gráfico em tela o SQL Operations Studio, nos permite salvar (Save as image) ou copiar (Copy as image), botões os quais estão disponíveis na barra de ferramentas apresentada em conjunto com nosso gráfico, bem acima da área de gráfico.

Por padrão ao salvar um gráfico como imagem será criado um novo arquivo formato de imagem no padrão .png (Portable Network Graphics, também conhecido como PNG’s Not GIF).

Figura 7 – Modelo de Gráfico Line – Dados analisados no formato de números e distribuídos na posição vertical.

Figura 8 – Modelo de Gráfico PIE – Dados distribuídos na posição vertical.

Ufa, chegamos ao final, sãos e salvos e como de costume com mais uma gama de conhecimento adquirido a partir deste momento. E ai ficou de queijo caiu com este recurso da mesma maneira que eu fiquei quando por acaso o descobrir? Acho que sim, não é verdade.

Então, mas não é somente a possibilidade de gerar gráficos que o View as Chart nos permite, ele também tem um outro botãozinho mágico que fica escondido chamado Create Insight, mas este botão eu vou deixar para que você descubra como fazer uso dele e quais os benefícios ele pode te trazer.

Com isso chegamos ao final de mais um post da sessão Dica do Mês, antes de encerrarmos, gostaria de contar com a sua participação neste post, respondendo a enquete abaixo:


Referências

https://docs.microsoft.com/pt-br/sql/sql-operations-studio/release-notes?view=sql-server-2017

https://docs.microsoft.com/pt-br/sql/sql-operations-studio/insight-widgets?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/sql-operations-studio/tutorial-build-custom-insight-sql-server?view=sql-server-2017&viewFallbackFrom=ssdt-18vs2017

Posts Anteriores

https://pedrogalvaojunior.wordpress.com/2018/03/14/dica-do-mes-microsoft-sql-server-2017-sql-graph-databases/

https://pedrogalvaojunior.wordpress.com/2018/01/24/dicadomes-sqlservertoolsuiteintroduction/

https://pedrogalvaojunior.wordpress.com/2017/11/01/dicadomessql2017novascolunasinternas/

https://pedrogalvaojunior.wordpress.com/2017/08/26/dica-do-mes-simulando-a-insercao-de-uma-massa-de-dados-aleatoria/

https://pedrogalvaojunior.wordpress.com/2017/05/23/conhecendo-e-aplicando-o-uso-de-atualizacao-de-estatisticas-incrementais/

Conclusão

Como de costume a cada novo produto, versão, service pack ou atualizações que a Microsoft e seu time de engenheiros especialista do SQL Server disponibiliza, novos e novos elementos são implementados ao vasto conjunto de possibilidades que o Microsoft SQL Server nos oferecer.

O SQL Operations Studio é justamente um destes elementos que vem aos poucos adquirindo seu espaços, se tornando componente importante para os desenvolvedores, programadores, analistas e administradores no que se relaciona as tarefas ou atividades oriundas de um ambiente de banco de dados.

A partir da nova versão do SQL Operations Studio, temos um grande recurso que nos permite utilizar modelos de gráficos predefinidos como fonte de análise dos dados os quais foram processados e apresentados em nossa tela, através do View as Chart, a Microsoft trouxe um pequeno ambiente que nos permite analisar, validar e tomar possíveis decisões de acordo com as simulações de dados processadas em real time em nossas querys.

Agradecimentos

Agradeço a você por sua atenção e visita ao meu blog. Fique a vontade para enviar suas críticas, sugestões, observações e comentários.

Um forte abraço, nos encontramos no próximo post da sessão Dica do Mês a ser publicado no mês de junho.

Salve o SQL Operations Studio, estamos todos ansiosos te esperando…

Material de Apoio – Abril 2018


Muito, mas, muito bom dia!

São exatamente 08:00 horas da manhã e você já esta dando uma passadinha por aqui, que legal, obrigado por mais esta visita.

E ai tudo bem com você? Espero que sim. Estou aqui mais uma vez procurando colaborar e compartilhar com a comunidade técnica em mais um post da sessão Material de Apoio dedicado exclusivamente ao meu blog.

Espero que você esteja gostando do conteúdo aqui disponibilizado, como também, possa me ajudar a cada vez mais melhorar ainda.

O post de hoje

Seja bem-vindo a mais um post da sessão Material de Apoio, sendo o segundo do ano de 2018 e de número 156 no total desta sessão.

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts  catalogados nos últimos meses, que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e atualmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • @@TranCount;
  • Claúsula Where;
  • Comando Declare;
  • Comando Kill;
  • Comando Order By;
  • Comando Rollback;
  • Comando While;
  • Conversão implícita de dados;
  • Cursor;
  • Database Level Events;
  • Dynamic Management Function sys.dm_exec_query_plan;
  • Dynamic Management Function sys.dm_exec_sql_text;
  • Dynamic Management View sys.dm_exec_query_stats;
  • Dynamic Management View sys.dm_os_tasks;
  • Dynamic Management View sys.dm_os_threads;
  • Error Code 3609;
  • Função Cast;
  • Função EventData();
  • Função Raiserror();
  • Função Top();
  • Loop de processamento infinito;
  • Opção Recompile;
  • Operador Cross Apply;
  • OS Threads;
  • Processos em execução;
  • Sessions;
  • Set RowCount;
  • Stored Procedure Exec;
  • System Table sys.sysprocesses;
  • Tratamento de Erros;
  • Trigger DDL; e
  • Variáveis.

Espero que este conteúdo possa lhe ajudar em seus atividades profissionais e acadêmicas. Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .doc ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Material de Apoio

A seguir apresento a relação de arquivos  selecionados:

1 – Material de Apoio – Abril 2018 – Encerramento processos que apresentam várias horas ou longo tempo de execução.sql

2 – Material de Apoio – Abril 2018 – Trigger DDL DATABASE LEVEL EVENTS – Bloqueando a criação de tabelas com um determinado nome.sql

3 – Material de Apoio – Abril 2018 – Identificando a SessionID e suas respectivas OS Threads.sql

4 – Material de Apoio – Abril 2018 – Relação de Querys – Apresentam conversão implícita de dados.sql

5 – Material de Apoio – Abril 2018 – Criando um loop infinito utilizando SET ROWCOUNT com Variable Table.sql

6 – Material de Apoio – Abril 2018 – Utilizando Rollback Transaction dentro de Trigger com tratamento de erro 3609.sql

7 – Material de Apoio – Abril 2018 – Utilizando Rollback Transaction dentro de Trigger decrementando o valor de @@Trancount.sql

Fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos, aproveite se possível deixe seu comentário, críticas, sugestões e observações.

Nota: Todos os arquivos disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

https://pedrogalvaojunior.wordpress.com/2018/02/13/material-de-apoio-fevereiro-2018/

https://pedrogalvaojunior.wordpress.com/2017/11/04/material-de-apoio-novembro-2017/

https://pedrogalvaojunior.wordpress.com/2017/08/08/material-de-apoio-agosto-2017/

https://pedrogalvaojunior.wordpress.com/2017/05/09/material-de-apoio-maio-2017/

Agradecimento

Quero agradecer imensamente a sua visita, sinto-me honrado e orgulhoso de contar com a sua presença.

Não deixe de acessar os outros posts das demais sessões, o próximo post desta sessão será publicado no mês de junho, até lá continue curtindo sua vida e compartilhando suas experiência.

Um forte abraço, muita saúde, sucesso e vamos em frente…

Short Scripts – Dezembro 2017


Hello World, muito, mas muito bom dia….

Mais um sábado começando, justamente hoje que excepcionalmente eu não vou trabalhar e deveria estar dormindo estou aqui aproveitando um pouco do meu tempo para me dedicar a outra enorme paixão, meu blog e meu seguidores que estão me ajudando desde o começo deste ano a aumentar de forma considerável a audiência dos meus posts e sessões aqui compartilhadas.

Como promessa é dívida e deve ser cumprida “ou melhor” compartilhada, estou compartilhando a minha feita a exatos três meses no final do último post da sessão Short Scripts, hoje publicando mais um conjunto de scripts adicionados a minha biblioteca particular de códigos e exemplos nos últimos meses.

O post de hoje

Como de costume selecionei os principais scripts armazenados recentemente na minha biblioteca de códigos, que apresentam os seguintes assuntos:

  • Armazenamento de arquivos;
  • Construção de Frases;
  • Conversão de caracteres;
  • Data Type Money;
  • Excel;
  • Grant All Permissions;
  • Operador Cube;
  • Operador Rollup;
  • Select Recursivo;
  • Sequência Numérica;
  • Views;
  • XP_DirTree;
  • XML Path.

Chegou a hora, mãos nos teclados, a seguir apresento os códigos e exemplos selecionados para o Short Script – Dezembro 2017. Vale ressaltar que todos os scripts publicados nesta sessão foram devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas.

Fique a vontade para compartilhar, comentar e melhorar cada um destes códigos.

Short Scripts

— Short Script 1  – Armazenando arquivos do Excel diretamente no SQL Server —
Set Nocount On
Go

Create Table FileList
(id int identity(1,1) primary key clustered,
FileName varchar(max))
Go

Create Table #TempTable
(id int identity(1,1) primary key clustered,
FileName varchar(max),
FileDepth int,
FileID int)
Go

Create Table dbo.TestBlob
(tbId int IDENTITY(1,1) NOT NULL,
tbName varchar (50) NULL,
tbDesc varchar (100) NULL,
tbBin varbinary (max) NULL)
Go

Insert Into #TempTable
EXEC master.sys.xp_dirtree ‘E:\ExcelOutput’,0,1;
Go

Select * from #TempTable
Go

Declare @I int=0, @FileName varchar(max), @Count int

Select * into #TempFileList from FileList
Set @Count=(Select count(*) from #TempFileList)

Declare @SQLText nvarchar(max)
While (@i<@Count)
 Begin

Set @FileName=(select top 1 FileName from #TempFileList)
  Set @SQLText=’Insert TestBlob(tbName, tbDesc, tbBin) Select ”’+@FileName+”’,”Files”,
  BulkColumn from Openrowset( Bulk ”’+@FileName+”’, Single_Blob) as tb’

  Print @SQLText
  Delete from #TempFileList where FileName=@FileName
  Set @I=@I+1
 End

Select tbID as ID,
tbName as ‘File Name’,
tbBin as ‘Converted file’
from TestBlob
Go

Drop Table #TempFileList
Go

— Short Script 2  – Convertendo caracteres diretamente para o formato e data type Money —
SELECT ‘1,,,,,,’+$0
Go

— Short Script 3  – Criando uma frase através de um Select Recursivo —
Create Table myWords
(RowID Int,
Word Varchar(20))
Go

Insert Into myWords Values(1, ‘This’),(2, ‘is’),(3, ‘an’),(4, ‘interesting’),
(5,’table’)

Declare @Sentence as varchar(8000)
SET @Sentence = ”

SELECT @Sentence = @Sentence + word + ‘ ‘
FROM myWords
ORDER BY RowID

PRINT @Sentence
Go

— Short Script 4  – Utilizando XML Path para gerar uma sequência numérica —
Declare @MyTable Table
(MyID Int)

Insert Into @MyTable Values(1),(2),(3),(4),(5)
Go

— Execução 1 —
Select MyID as “text()”, ‘;’ as “text()” from @MyTable for xml path(”)
Go

— Execução 2 —
Select MyID + ‘;’ as “text()” from @MyTable for xml path(”)
Go

— Short Script 5  – Atribuindo Grant All para todas tabelas em um Banco de Dados —

USE MyDatabase
Go

If EXISTS (Select [name] FROM master..sysdatabases WHERE [name] = ‘MyDatabase’)
Begin

Print ‘Updating Permissions for MyDatabase’
Print ‘ ‘

Declare @tablename varchar(255), @tablename_header varchar(255)

Declare tnames_cursor CURSOR FOR
Select name FROM MyDatabase..sysobjects
WHERE type = ‘U’

Open tnames_cursor
Fetch Next From tnames_cursor INTO @tablename

While (@@Fetch_status <> -1)
Begin

If (@@Fetch_status <> -2)
Begin
Select @tablename_header = ‘Updating ‘ + ‘MyDatabase..’ + RTrim(UPPER(@tablename) )
Print @tablename_header
Exec (‘Grant All on ‘ + @tablename +’ to shanewiso’)
End

Fetch Next From tnames_cursor INTO @tablename
End

Deallocate tnames_cursor
End
Go

— Short Script 6  – Diferença entre os operadores Rollup e Cube —
Create Table Funcionarios
(Codigo Int Primary Key,
Nome VarChar(50) Not Null,
Sexo VarChar(10) Not Null,
Salario Int Not Null,
Departamento VarChar(50) Not Null)
Go

Insert Into Funcionarios
Values
(1, ‘David’, ‘Masculino’, 5000, ‘Sales’),
(2, ‘Jim’, ‘Feminino’, 6000, ‘HR’),
(3, ‘Kate’, ‘Feminino’, 7500, ‘IT’),
(4, ‘Will’, ‘Masculino’, 6500, ‘Marketing’),
(5, ‘Shane’, ‘Feminino’, 5500, ‘Finance’),
(6, ‘Shed’, ‘Masculino’, 8000, ‘Sales’),
(7, ‘Vik’, ‘Masculino’, 7200, ‘HR’),
(8, ‘Vince’, ‘Feminino’, 6600, ‘IT’),
(9, ‘Jane’, ‘Feminino’, 5400, ‘Marketing’),
(10, ‘Laura’, ‘Feminino’, 6300, ‘Finance’),
(11, ‘Mac’, ‘Masculino’, 5700, ‘Sales’),
(12, ‘Pat’, ‘Masculino’, 7000, ‘HR’),
(13, ‘Julie’, ‘Feminino’, 7100, ‘IT’),
(14, ‘Elice’, ‘Feminino’, 6800,’Marketing’),
(15, ‘Wayne’, ‘Masculino’, 5000, ‘Finance’)
Go

— Agrupamento simples através de Group By através da coluna Departamento —
Select Departamento,
Sum(Salario) As Salario_Sum
From Funcionarios
Group By Departamento
Go

— Utilizando operador Rollup para gerar totais e subtotais com base na coluna Departamento —
Select Coalesce (Departamento, ‘Departamentos’) As Departamento,
Sum(Salario) As Salario_Sum
From Funcionarios
Group By Rollup (Departamento)
Go

— Procurando subtotais através do operador Rollup para colunas Departamento e Sexo —
Select Coalesce (Departamento, ‘Departamentos’) As Departamento,
Coalesce (Sexo,’Sexos’) As Sexo,
Sum(Salario) As Salario_Sum
From Funcionarios
Group By Rollup (Departamento, Sexo)
Go

— Utilizando o Operador Cube para gerar todas as possíveis combinações de agrupamentos de dados através das colunas Departamento e Sexo —
Select Coalesce (Departamento, ‘Departamentos’) As Departamento,
Coalesce (Sexo,’Sexos’) As Sexo,
Sum(Salario) As Salario_Sum
From Funcionarios
Group By Cube (Departamento, Sexo)
Go

— Short Script 7  – Identificando a relação de colunas utilizadas em uma view —
— Exemplo 1: Utilizando Information_Schema —

SELECT * FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE AS UsedColumns
WHERE UsedColumns.VIEW_NAME=’NameofView’
Go

— Exemplo 2: Utilizando DMVs —
SELECT
v.name AS ViewName,
c.name AS ColumnName,
columnTypes.name AS DataType,
aliases.name AS Alias
FROM sys.views v INNER JOIN sys.sql_dependencies d
ON d.object_id = v.object_id
INNER JOIN .sys.objects t
ON t.object_id = d.referenced_major_id
INNER JOIN sys.columns c
ON c.object_id = d.referenced_major_id
INNER JOIN sys.types AS columnTypes
ON c.user_type_id=columnTypes.user_type_id
AND c.column_id = d.referenced_minor_id
INNER JOIN sys.columns AS aliases
On c.column_id=aliases.column_id
AND aliases.object_id = object_id(‘[SchemaName].[ViewName]’)
WHERE v.name = ‘ViewName’;
Go

Show, missão cumprida! Mais uma relação de short scripts acaba de ser compartilhada, mesmo sendo denominados short entre aspas “pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.


Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

Agradecimento

Obrigado mais uma vez por sua visita, fico honrado com sua ilustre presença ao meu blog, desejo e espero que você possa ter encontrado algo que lhe ajudou.

Volte sempre, nos encontraremos mais uma vez na sessão Short Scripts no post do mês de fevereiro de 2018.

Um forte abraço, feliz natal e próspero ano novo.

Short Scripts – Junho 2017


Boa noite galera, olá comunidade de banco de dados.

Tudo bem? Graças a deus mais um final de semana se aproximando, finalzinho de noite de quinta – feira, acredito que neste momento minha linda esposa esta curtindo mais um episódio de uma das suas séries favoritas, ou lendo mais um dos seus intermináveis livros (kkkkkk), isso não é um crítica, muito ao contrário, a leitura faz bem para a alma e principalmente para a mente, mas posso dizer que minha pequena Fernanda é uma degustadora insaciável de livros.

Mudando de assunto, este é o segundo post deste ano dedicado exclusivamente a sessão Short Scripts, sessão criada a alguns anos que  esta atraindo um número interessante de visitantes, principalmente de profissionais da área de banco de dados na busca por exemplos de códigos que possam solucionar ou elucidar na resolução de um determinado problema.

O post de hoje

Para este post, selecionei como de costume os principais scripts armazenados recentemente na minha biblioteca de códigos, que apresentam os seguintes assuntos:

  • Check Constraint;
  • Common Table Expression;
  • Índices;
  • Information_schema.columns;
  • Monitoramento de Processos;
  • Network Protocol;
  • Operador Outer Apply;
  • Requisição de Disco;
  • Sys.dm_server_registry;
  • Sys.dm_tcp_listener_states;
  • sys.dm_exec_query_plan;
  • sys.dm_exec_sql_text;
  • sys.dm_exec_query_stats;
  • sys.types;
  • sys.tables;
  • sys.dm_db_index_usage_stats;
  • Sys.Identity_Columns; e
  • User Defined Function.

Então mãos no teclado, a seguir apresento os códigos e exemplos selecionados para o Short Script – Junho 2017. Vale ressaltar que todos os scripts publicados nesta sessão são devidamente testados, mas isso não significa que você pode fazer uso dos mesmo em seu ambiente de produção, vale sim todo cuidado possível para evitar maiores problemas.

Fique a vontade para compartilhar, comentar e melhorar cada um destes códigos.

Short Scripts

— Short Script 1  – Utilizando Check Constraint para cálculo de datas —

Create Table Alunos
(Codigo Int)
Go

— Adicionando a coluna e constraint —
Alter Table Alunos
Add DataNascimento DateTime
Constraint CK_Alunos_DataNascimento Check (DateDiff(Year,DataNascimento, GetDate()) >=18)
Go

— Adicionando somente a constraint —
Alter Table Alunos
Add Constraint CK_Alunos_DataNascimento
Check (DateDiff(Year,DataNascimento, GetDate()) >=18)
Go

— Default – Estado —
Alter Table Alunos
Add Constraint [DF_Estado] Default ‘SP’ for Estado
Go

— Short Script 2  – Aplicando o uso de Common Table Expression para inserir registros com valores de um registro anterior —

DECLARE @Metas TABLE ( Data DATE, Meta INT );

INSERT INTO @Metas
( Data, Meta )
VALUES ( DATEFROMPARTS(2017, 03, 29), 50 ),
( DATEFROMPARTS(2017, 04, 11), 35 ),
( DATEFROMPARTS(2017, 04, 13), 50 );

DECLARE @Producao TABLE
(
Data DATE ,
Quantidade INT
);

INSERT INTO @Producao
( Data, Quantidade )
VALUES ( DATEFROMPARTS(2017, 04, 10), 49 ),
( DATEFROMPARTS(2017, 04, 11), 35 ),
( DATEFROMPARTS(2017, 04, 12), 36 ),
( DATEFROMPARTS(2017, 04, 13), 50 ),
( DATEFROMPARTS(2017, 04, 14), 50 );

WITH DadosProduzidos
AS ( SELECT P.Data ,
Quantidade = SUM(P.Quantidade)
FROM @Producao AS P
GROUP BY P.Data
)
SELECT D.Data ,
[Produzido] = D.Quantidade ,
Meta = ( SELECT TOP 1 M.Meta
FROM @Metas AS M
WHERE M.Data <= D.Data
ORDER BY M.Data DESC
)
FROM DadosProduzidos D;

— Short Script 3  – Identificando a relação de todos os índices existentes em um banco de dados —

SELECT DB_NAME(Database_ID) DBName,
SCHEMA_NAME(schema_id) AS SchemaName,
OBJECT_NAME(ius.OBJECT_ID) ObjName,
i.type_desc,
i.name,
user_seeks,
user_scans,
user_lookups,
user_updates
FROM sys.dm_db_index_usage_stats ius INNER JOIN sys.indexes i
ON i.index_id = ius.index_id
AND ius.OBJECT_ID = i.OBJECT_ID
INNER JOIN sys.tables t
ON t.OBJECT_ID = i.OBJECT_ID
GO

— Short Script 4 – Obtendo informações de network protocols e device através da sys.dm_server_registry —

SELECT MAX(CONVERT(VARCHAR(15),value_data)) As ‘Default Port’ FROM sys.dm_server_registry
WHERE registry_key LIKE ‘%MSSQLServer\SuperSocketNetLib\Tcp\%’
AND value_name LIKE N’%TcpPort%’
AND CONVERT(float,value_data) > 0
Go

SELECT MAX(CONVERT(VARCHAR(15),value_data)) As ‘Dynamic Port ‘ FROM sys.dm_server_registry
WHERE registry_key LIKE ‘%MSSQLServer\SuperSocketNetLib\Tcp\%’
AND value_name LIKE N’%TcpDynamicPort%’
AND CONVERT(float,value_data) > 0
Go

— Short Script 5 – Obtendo informações de network protocols e device através da sys.dm_tcp_listener_states —

SELECT port As ‘Default Port’ FROM sys.dm_tcp_listener_states
WHERE is_ipv4 = 1
AND [type] = 0
AND ip_address <> ‘127.0.0.1’
Go

— Short Script 6 – Criando uma User Defined Function com operador Outer Apply —

CREATE FUNCTION AttributesOfTable (@tableToSearch nvarchar(500))
returns table
return SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
from information_schema.columns
where TABLE_NAME = @tableToSearch;
go

Declare @tableToSearch table (nome_tabela varchar(50));
INSERT into @tableToSearch values (‘Customer’), (‘Order’), (‘Papagaio’);

SELECT T1.nome_tabela as [nome da tabela],
T2.TABLE_SCHEMA as [nome do esquema],
T2.COLUMN_NAME as [nome da coluna]
from @tableToSearch as T1
outer apply dbo.AttributesOfTable(T1.nome_tabela) as T2;

— Short Script 7 – Utilizando a DMV sys.identity_columns para identificar o valor identity de uma determinada coluna —

SELECT sys.tables.name AS [Table Name],
sys.identity_columns.name AS [Column Name],sys.types.name as Type,
last_value AS [Last Value]
FROM sys.identity_columns
INNER JOIN sys.tables
ON sys.identity_columns.object_id = sys.tables.object_id
Inner join sys.types on sys.types.user_type_id = sys.identity_columns.user_type_id
ORDER BY last_value DESC

— Short Script 8 – Consultando informações sobre o SQL Server armazenadas no Registro do Windows —

— A. Display the SQL Server services —
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE key_name LIKE N’%ControlSet%’
Go

— B. Display the SQL Server Agent registry key values —
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE key_name LIKE N’%SQLAgent%’
Go

— C. Display the current version of the instance of SQL Server —
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE value_name = N’CurrentVersion’
Go

— D. Display the parameters passed to the instance of SQL Server during startup —
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE registry_key LIKE N’%Parameters’
Go

— E. Return network configuration information for the instance of SQL Server —
SELECT registry_key, value_name, value_data
FROM sys.dm_server_registry
WHERE keyname LIKE N’%SuperSocketNetLib%’
Go

— Short Script 9 – Identificando a relação de querys que apresentam o maior consumo de disco durante seu período de processamento – 

SELECT TOP 20 SUBSTRING(qt.text,
(qs.statement_start_offset/2)+1,
((CASE
qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.text)
ELSE
qs.statement_end_offset
END –
qs.statement_start_offset)/2)+1),
qs.execution_count,

qs.total_logical_reads, qs.last_logical_reads,
qs.min_logical_reads,
qs.max_logical_reads,
qs.total_elapsed_time,
qs.last_elapsed_time,
qs.min_elapsed_time,
qs.max_elapsed_time,
qs.last_execution_time,
qp.query_plan
FROM sys.dm_exec_query_stats
qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY
sys.dm_exec_query_plan(qs.plan_handle) qp
WHERE qt.encrypted=0
ORDER BY
qs.total_logical_reads DESC

Legal, mais uma relação de short scripts acaba de ser compartilhada, mesmo sendo denominados short entre aspas “pequenos”, posso garantir que todos estes exemplos são de grande importância, apresentam um valor e conhecimento do mais alto nível.


Chegamos ao final de mais um Short Scripts, espero que este material possa lhe ajudar, ilustrando o uso de alguns recursos e funcionalidades do Microsoft SQL Server.

Acredito que você tenha observado que estes códigos são bastante conhecidos em meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server publicados no decorrer dos últimos anos.

Boa parte deste material é fruto de um trabalho dedicado exclusivamente a colaboração com a comunidade, visando sempre encontrar algo que possa ser a solução de um determinado problema, bem como, a demonstração de como se pode fazer uso de um determinado recurso.

Links

Caso você queira acessar os últimos posts desta sessão, não perca tempo acesse os links listados abaixo:

Agradecimento

Agradeço sua visita, com certeza é imenso prazer saber que você teve interesse em acessar este post.

Nos encontramos novamente no mês de setembro, para o próximo post dedicado a sessão Short Scripts.

Um grande abraço, boa noite, bom descanso.

Valeu.

Material de Apoio – Maio 2017


Muito boa tarde comunidade e amantes de banco de dados!!!

Tudo bem? Este é mais um post da sessão Material de Apoio, sendo o segundo no decorrer de 2017 e de número 152 no total desta sessão. Estamos nos aproximando da metade de 2017, que loucura isso, como a rotina do dia a dia não nos deixa perceber o quanto o tempo correr, falando justamente da correria da nossas vida, a relação de arquivos compartilhadas neste post poderá justamente lhe ajudar a economizar muito do seu tempo.

O post de hoje

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, estou trazendo alguns dos mais recentes scripts  catalogados nos últimos meses que atualmente estão compondo a minha galeria de códigos formada ao longo dos anos de trabalho como DBA e hoje principalmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Check Constraint para Cálculo de Data;
  • CTE – Preenchendo dados de um registro com base no registro anterior;
  • Função para formatação de valores;
  • Função para retornar nome de tabelas e seus respectivos atributos(colunas);
  • Identificação do primeiro dia do mês corrente;
  • Monitoramento de Processos Bloqueados;
  • Movimentação de tabelas entre filegroups;
  • Obtendo o último valor Identity de uma coluna; e
  • Requisição de disco.

Tenho a certeza que este conteúdo poderá lhe ajudar muito em seus atividades profissionais e acadêmicas, fique a vontade para copiar, editar, compartilhar e distribuir estes arquivos com seus contatos.

Material de Apoio

A seguir apresento a relação de scripts selecionados:

1 – Material de Apoio – Maio – 2017 – Check Constraint – Cálculo de Data.sql

2 – Material de Apoio – Maio – 2017 – Preencher dados de um registro com dados do registro anterior.sql

3 – Material de Apoio – Maio – 2017 – Função – Formatação de Valores.sql

4 – Material de Apoio – Maio – 2017 – Função para retornar o nome e seus atributos – Utilizando operador Outer Apply.sql

5 – Material de Apoio – Maio – 2017 – Identificar o primeiro dia do mês com base na data atual.sql

6 – Material de Apoio – Maio – 2017 – Monitorando Processos Bloqueados no SQL Server.sql

7 – Material de Apoio – Maio – 2017 – Move Table between Filegroup – Stored Procedure.sql

8 – Material de Apoio – Maio – 2017 – Obtendo último valor identity.sql

9 – Material de Apoio – Maio – 2017 – Listando as querys que mais realizam requisição de disco.sql

Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .doc ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Nota: Todos os arquivos aqui disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

Agradecimento

Mais uma vez obrigado por sua visita, espero lhe encontrar muitas vezes no decorrer deste ano em meu blog.

Não deixe de acessar os outros posts das demais sessões, e o próximo post desta sessão será publicado em Agosto, um forte abraço.

Até mais.

Material de Apoio – Fevereiro 2017


Salve, salve, amigos…. Bom dia!

Estamos chegando com mais um post da sessão Material de Apoio, sendo esta a sessão mais antiga do meu blog que em 2017 completa 10 anos de existência.

Ao longo destes 10 anos muita coisa mudou não somente na minha vida, mas também no meu blog, dentre elas o número de visitante crescendo ao longo dos dias, meses e anos conseguindo no começo deste ano atinguir a impressionamente marca de 1 milhão de visitantes a contar desde o primeiro dia que o meu antigo blog publicado no extinto livespace foi publicado.

Muito obrigado a todos, só tenho a agradecer á você e estes milhares de visitantes que me ajudaram a atinguir esta marca e fazem parte desta história.

Obrigado, valeu e que venham os próximos 1, 2, 3 milhões de visitantes.

O post de hoje

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, como diria naquele filme vou “compartilhagram” os meus scripts catalogados ao longo dos anos de trabalho como DBA e hoje principalmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Advanced Query with Tunning;
  • Compactação de Backup;
  • Compactação de Tabelas e Índices;
  • Compressão de Dados;
  • Criptografia de Banco de Dados;
  • Criptografia de Banco de Dados com Master Key;
  • Linked Server para Excel;
  • Transparent Data Encription TDE;
  • XQuery With Data Method;
  • XQuery With Exist Method; e
  • XQuery With Query Method.

Material de Apoio

A seguir apresento a relação de scripts selecionados:

1 – Material de Apoio – Fevereiro – 2017 – advanced-querying-and-query-tuning-in-sql-server-2000-and-2005-sql

2 – Material de Apoio – Fevereiro – 2017 – compactacao-de-backup-sql

3 – Material de Apoio – Fevereiro – 2017 – compactacao-de-tables-e-index-sql

4 – Material de Apoio – Fevereiro – 2017 – exemplo-compressao-de-dados-sql

5 – Material de Apoio – Fevereiro – 2017 – criptografia-sql

6 – Material de Apoio – Fevereiro – 2017 – criptografia-master-key-sql

7 – Material de Apoio – Fevereiro – 2017 – linked-server-para-excel-sql

8 – Material de Apoio – Fevereiro – 2017 – xquery-data-method-sql

9 – Material de Apoio – Fevereiro – 2017 – xquery-exist-method-sql

10 – Material de Apoio – Fevereiro – 2017 – xquery-query-method-sql

Por questões de compatibilidade com a plataforma WordPress.com, todos os arquivos estão renomeados com a extensão .doc ao final do seu respectivo nome, sendo assim, após o download torna-se necessário remover esta extensão, mantendo somente a extensão padrão .sql.

Nota: Todos os arquivos aqui disponibilizados foram obtidos ou criados com autorização de seus autores, sendo estes, passíveis de direitos autorais.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo utilize os links listados abaixo:

Agradecimento

Mais uma vez obrigado por sua visita, espero lhe encontrar muitas vezes no decorrer deste ano em meu blog.

Um forte abraço, vamos em frente.

Até mais.

Material de Apoio – Novembro 2016


Bom dia, bom dia, bom dia…..

Olá comunidade, amantes de bancos de dados e profissionais de tecnologia, estou chegando com mais um post dedicado a sessão Material de Apoio, sendo este o último desta sessão no ano de 2016.

Mesmo sendo o último desta sessão, este post é o primeiro com o nome layout que eu decidi adotar desde o final de Outubro para as novas publicações compartilhadas com você no meu blog, espero que vocês estejam gostando.

O post de hoje

Para aqueles que já acompanham o meu blog a um certo tempo, os posts dedicados a sessão Material de Apoio, possuem o objetivo de compartilhar o conhecimento de recursos, funcionalidades e procedimentos que podemos realizar no Microsoft SQL Server.

Hoje não será diferente, como diria naquele filme vou “compartilhagram” os meus scripts catalogados ao longo dos anos de trabalho como DBA e hoje principalmente como Professor de Banco de Dados.

Neste post você vai encontrar arquivos relacionados com os seguintes temas:

  • Funções de Conversão de dados;
  • Funções Temporáis e Lógicas;
  • Funções Textuais;
  • Funções de Ranking;
  • Páginação de Dados;
  • Objeto Sequence;
  • Windows Function First e Last Value;
  • Windows Function Lad e Lead;
  • Windows Function Percent_Rank e Cume_Dist; e
  • Windows Function Range e Row_Number.

Como de costume gosto de destacar que todos estes arquivos são fruto do trabalho realizado como DBA desde 2000, bem como, a pesquisa e coleta de informações através da internet, onde grande parte do conhecimento aqui compartilhado também é obtido através da  colaboração de seus autores, grande profissionais nacionais e internacionais como reconhecidos especialistas nas áreas de:

  • Modelagem de Dados;
  • Engenharia de Banco de Dados;
  • Engenharia de Softwares e Processos;
  • Banco de Dados;
  • Servidores;
  • Alta Disponibilidade;
  • Desenvolvimento; e
  • Migração e Contingência de Dados.

Obseravação: Toda e qualquer informação, código, exemplo e lógica utilizada nestes scripts foi aplicada em um determinado cenário, situação ou necessidade, o que em muitos casos talvez não se aplica a sua necessidade mas pode ser útil como material de consulta ou aprendizado.

Além disso, todos os arquivos estão renomeados tendo ao final do seu nome a extensão .doc acrescido, isto se torna necessário para garantir a compatibilidade com a plataforma do WordPress.com.

Vale ressaltar que após o seu download será necessário remover esta extensão mantendo a extensão .sql padrão para arquivos do script do SQL Server.

Material de Apoio

A seguir apresento a relação de scripts selecionados:

Exemplo – 1 – Funcoes-de-conversao-sql

Exemplo – 2 – Funcoes-tempororais-e-logicas-sql

Exemplo – 3 – Funcoes-textuais-sql

Exemplo – 4 – Utilizando-paging-sql

Exemplo – 5 – Utilizando-sequence-rank-function-sql

Exemplo – 6 – Windows-function-first-e-last-value-sql

Exemplo – 7 – Windows-function-lad-e-lead-sql

Exemplo – 8 – Windows-function-percent_rank-e-cume_dist-sql

Exemplo – 9 – Windows-function-range-e-row-sql

Bom pessoal, chegamos ao final de mais um Material de Apoio, espero que estes arquivos possam lhe ajudar e ilustrar como podemos fazer dos recursos aqui compartilhados.

Acredito que você tenha observado que estes códigos já são bastante conhecidos no meu blog, todos estão relacionados aos posts dedicados ao Microsoft SQL Server 2012, publicados anteriormente.

Links

Caso você queira acessar os posts anteriores da sessão, não perca tempo acesse os links listados abaixo:

 

Agradecimento

Mais uma vez obrigado por sua visita, um forte abraço, nos encontramos em breve.

Material de Apoio – Julho 2016


Hoje é sexta – feira, sexta – feira….. Graças a deus.

Salve galera, bom dia, Tudo bem?

E ai, mês de Julho, férias para boa parte dos estudantes, professores e demais profissionais relacionados a área de educação, assim como eu também. Espero que todos estejam aproveitando este justo e necessário período de descanso, pois muitos pensam que a vida acadêmica é fácil, tranquila e estável, mas posso dizer que não é bem assim.

Pois bem, como você deve ter percebido este é mais um post da sessão Material de Apoio, que a partir deste ano esta sendo publicada a cada três meses. Para você que ainda não conhece esta sessão, ela é uma das mais antigas do meu blog, tendo atualmente mais de 140 posts exclusivos, tendo como objetivo principal compartilhar os códigos de exemplo e scripts existentes em minha biblioteca pessoal de scripts dedicados ao SQL Server desde a versão 7 isso lá nos anos 2000.

Caso você queira acessar os últimos posts, utilize os links apresentados abaixo:

https://pedrogalvaojunior.wordpress.com/2016/04/20/material-de-apoio-abril-2016

https://pedrogalvaojunior.wordpress.com/2016/01/18/material-de-apoio-janeiro-2016/

Seguindo em frente, no post de hoje vou compartilhar com vocês alguns scripts que utilizei recentemente com os meus alunos da Fatec São Roque na Disciplina de Banco de Dados II, dentre os quais destaco:

  • Comando Merge;
  • Comando Begin Catch;
  • Comando Begin Try;
  • Comando Begin Transaction;
  • Comando Commit;
  • Comando Rollback;
  • Comando Print;
  • Common Table Expression;
  • Função de Ranking – Dense_Rank();
  • Função de Ranking – NTile()
  • Função de Ranking – Rank();
  • Função de Ranking – Row_Number();
  • Ordenação de Dados;
  • Operador And;
  • Operador Between; e
  • Operador Is Not Null.

    Como de costume gosto de destacar que todos estes arquivos são fruto do trabalho realizado como DBA desde 2000, bem como, a pesquisa e coleta de informações através da internet, onde grande parte do conhecimento aqui compartilhado também é obtido através da  colaboração de seus autores, grande profissionais nacionais e internacionais como reconhecidos especialistas nas áreas de:

    • Modelagem de Dados;
    • Engenharia de Banco de Dados;
    • Engenharia de Softwares e Processos;
    • Banco de Dados;
    • Servidores;
    • Alta Disponibilidade;
    • Desenvolvimento; e
    • Migração e Contingência de Dados.

      Obseravação: Toda e qualquer informação, código, exemplo e lógica utilizada nestes scripts foi aplicada em um determinado cenário, situação ou necessidade, o que em muitos casos talvez não se aplica a sua necessidade mas pode ser útil como material de consulta ou aprendizado.

      Além disso, todos os arquivos estão renomeados tendo ao final do seu nome a extensão .doc acrescido, isto se torna necessário para garantir a compatibilidade com a plataforma do WordPress.com.

      Vale ressaltar que após o seu download será necessário remover esta extensão mantendo a extensão .sql padrão para arquivos do script do SQL Server.

A seguir a relação de scripts:

Exemplo 1 – Utilizando a função Raiserror.sql

Exemplo 2 – Utilizando o Comando Merge.sql

Exemplo 3 – Utilizando o comando Merge + Insert + Update.sql

Exemplo 4 – Utilizando o comando Begin Try.. Begin Catch + Transaction + Print para apresentar mensagem.sql

Exemplo 5 – Trabalhando com função de Ranking.sql

Exemplo 6 – Trabalhando com função de Ranking-2.sql


Legal, chegamos ao final de mais um post, fique a vontade para compartilhar com seus contatos, não deixe de enviar seus comentários, críticas, dicas ou sugestões.

Mais uma vez obrigado por sua visita, por seu interesse e participação.

Uma ótima sexta – feira e bom final de semana.

Abraços.

Material de Apoio – Abril – 2016


Boa noite, boa noite, boa noite!!!!

Véspera de feriado e aqui estamos nós se preparando para alguns dias de descanso e também não deixando de compartilhar com a comunidade um pouco mais sobre o Microsoft SQL Server seus segredos e mistérios. Alias este é um ótimo nome para uma possível nova sessão que estou pensando em lançar no meu blog!!!

Falando das sessões atuais, hoje estou retornando com mais um post relacionado a minha biblioteca de scritps e códigos voltados para o SQL Server, como você já percebeu estou me referindo a sessão Material de Apoio que este ano ainda não recebeu uma merecida atenção, tendo seu último post publicado em Janeiro.

Caso você queira acessar este último post, utilize o link apresentado abaixo:
https://pedrogalvaojunior.wordpress.com/2016/01/18/material-de-apoio-janeiro-2016/

Neste post vou ser um pouco mais generoso e disponibilizar uma relação mais extensa e diversificada de arquivos, destaco alguns dos assuntos relacionados aos scripts de hoje:

  • BulkInsert com arquivos de formato .fmt;
  • Criptografia;
  • Controle Automática de Very Large Files;
  • Constrainst e Common Table Expressions;
  • Dynamic Management View – Sys.dm_os_memory_clerks;
  • Extended Stored Procedure – XP_FixedDrives;
  • Informações sobre Page Life Expectancy;
  • Informações sobre licença do uso do SQL Server
  • Funções – DateDiff, Convert, SubString;
  • System Stored Procedure – SP_FixedDrives;
  • Stored Procedure Não Documentada – SP_MSForEachDB; entre outros.

Como de costume gosto sempre de destacar que todos estes arquivos são fruto do meu trabalho realizado como DBA desde 2000 e principalmente da pesquisa e coleta de informações através da internet, onde grande parte do conhecimento aqui compartilhado também obtido através da dedicação e colaboração de seus autores grande profissionais nacionais e internacionais que atuam como profissionais reconhecidos e especialistas nas áreas de:

  • Modelagem de Dados;
  • Engenharia de Banco de Dados;
  • Engenharia de Softwares e Processos;
  • Banco de Dados;
  • Servidores;
  • Alta Disponibilidade;
  • Desenvolvimento;
  • Migração e Contingência de Dados.

Obseravação: Toda e qualquer informação, código, exemplo e lógica utilizada nestes scripts foi aplicada em um determinado cenário, situação ou necessidade, o que em muitos casos talvez não se aplica a sua necessidade mas pode ser útil como material de consulta ou aprendizado.

Além disso, todos os arquivos estão renomeados tendo ao final do seu nome a extensão .doc como forma de compatibilidade com a plataforma do WordPress.com, vale sempre ressaltar que após o seu download será necessário remover esta extensão mantendo a extensão .sql padrão para arquivos do script do SQL Server.

A seguir a relação de scripts:

1 – Exemplo – Avançado – Utilizando – Stored Procedure – sp_fixeddrives.sql

2 – Exemplo – Básico – Utilizando a Extended Procedure – XP_fixeddrives.sql

3 – Exemplo – Intermediário – BulkInsert com arquivo de formato.fmt.sql

4 – Exemplo – Obtendo informações – Utilizando sys.dm_os_memory_clerks.sql

5 – Exemplo – Obtendo informações – Page Life Expectancy.sql

6 – Exemplo – Informações – Server Memory.sql

7 – Exemplo – Intermediário – Cuidados – DATEDIFF, CONVERT, SUBSTRING e funções sobre colunas na cláusula WHERE e JOINs.sql

8 – Exemplo – Avançado Controle Automático de VLFs – Passo 1 – Setup.sql

9 – Exemplo – Avançado Controle Automático de VLFs – Passo 2 – Initial Config.sql

10 – Exemplo – Avançado Controle Automático de VLFs – Passo 3 -On Demand Check.sql

11 – Exemplo – Básico – Descobrindo se o Trigger é Insert, Update ou Delete.sql

12 – Exemplo – Utilizando – CTE Composta + CTE Recursiva.sql

13 – Exemplo – Criando – Check Constraint + User Function vinculada com Check Constraint.sql

14 – Exemplo – Utilizando – SP_MSForEachDB + Use Dinâmico.sql

15 – Exemplo – Utilizando – Stored Procedure – Exibir – Código Stored Procedure Criptografada.sql

16 – Exemplo – Utilizando – Stored Procedure para Descriptografia de Stored Procedure.sql

17 – Exemplo – Obtendo o Menor e o Maior Valor – Acrescentendo Valores Intermediários.sql

18 – Exemplo – Obtendo – Quantidade de Dias – Encerramento – Licença SQL Server.sql

 

Fique a vontade para compartilhar com seus contatos, não deixe de enviar seus comentários, críticas, dicas ou sugestões.

Mais uma vez obrigado por sua visita, por seu interesse e participação.

Um ótimo feriado, bom descanso, nos encontramos me breve.

Abraços.

Short Script – Junho – 2015


Bom dia, Comunidade! Hello Everybody!!!

Estamos começando mais um mês e como diz alguns dos cronistas esportivos durante suas transmissões “O tempo passa….”, realmente passa e temos que procurar aproveitar.

Como já destaquei anteriormente procure diariamente estudar e conhecer cada vez mais sobre o mundo de Banco de Dados, Carreira de DBA, SQL Server e outros elementos que se relacionam com a minha função de Administrador de Banco de Dados, que exerço a muito tempo. Na verdade faço isso por que gosto e principalmente para me manter atualizado neste concorrido mercado de trabalho, seja ele profissional ou acadêmico, neste sentido em muitos momentos algumas informações, dicas, truques e até mesmo códigos de exemplo acabam fazendo parte da minha “Biblioteca de Scripts” que venho nos últimos anos compartilhando com todos vocês.

Seguindo esta escrita e mantendo a tradição, como de costume todo inicio ou final de mês estou compartilhando com vocês novos Shorts Scripts ou Materiais de Apoio, e hoje não será diferente.

Neste Short Script, você vai encontrar pequenos blocos de código ou exemplos relacionados aos seguintes itens:

  • Criação de Jobs e Steps por linha de comando utilizando a opção @subsytem;
  • Criação de função para manipulação de String;
  • Criação de uma User Function Scalar para trabalhar com a Tabela Price;
  • Simulando um Select “*” que não retorna todas as colunas;
  • Trabalhando com XML em conjunto com SP_XML_PrepareDocument;
  • Utilizando a função Count_Big em conjunto com Funções de Agregação;
  • Utilizando o comando Intersect com valores Char e Int; e
  • Utilizando Sparse Columns e Sparse Columns Sets.

Fique a vontade para copiar e compartilhar os Short Scripts apresentados abaixo:

 

— Short Script 1 – Criando Job para substituir o uso do XP_CMDShell –

Create PROCEDURE dbo.usp_ExecCmdShellProcess

AS

BEGIN

DECLARE @job NVARCHAR(100), @BulkCMD Varchar(1000)

SET @job = ‘xp_cmdshell replacement’+Convert(Varchar(10),GetDate()) ;

 

SET @BulkCMD = ‘BULK INSERT ListFiles FROM ‘+”’C:\TEMP\LISTFILES.TXT” ‘+

‘WITH (FIELDTERMINATOR = ”;”, ROWTERMINATOR = ”’+ CHAR(10) +”’, CODEPAGE = ”ACP”)’

 

EXEC msdb..sp_add_job @job_name = @job,

@description = ‘Automated job to execute command shell script’,

@owner_login_name = ‘pedro’, @delete_level = 1 ;

 

EXEC msdb..sp_add_jobstep @job_name = @job, @step_id = 1,

@step_name = ‘Command Shell Execution’, @subsystem = ‘CMDEXEC’,

@command =’dir /b > C:\TEMP\LISTFILES.TXT’, @on_success_action = 1;

 

EXEC msdb..sp_add_jobserver @job_name = @job ;

 

EXEC msdb..sp_start_job @job_name = @job ;

 

Exec(@Bulkcmd)

 

END ;

GO

 

— Short Script 2 – Criando User Function para cortar Strings em partes —

CREATE FUNCTION fncCortaString(@txt VARCHAR(50), @txt_ini VARCHAR(50), @txt_fim VARCHAR(50))

RETURNS VARCHAR(50)

BEGIN

RETURN

(

SUBSTRING(@txt, CHARINDEX(@txt_ini, @txt) + LEN(@txt_ini), (CHARINDEX(@txt_fim, @txt) – CHARINDEX(@txt_ini, @txt)) – LEN(@txt_ini))

)

END

 

Select dbo.fncCortaString(‘SQL Server’, ‘SQL ‘, ‘ver’)

 

— Short Script 3 – Utilizando a função Count_Big para criar índice único em view com função de agregação —

Create Table MySampleTable

(Id1 Int,

Id2 Int,

SomeData Varchar(100))

 

Create View SampleView

With SchemaBinding

As

Select COUNT(*) TableCount,

Id2

From dbo.MySampleTable

Group By Id2

 

— Erro ao criar —

Create Unique Clustered Index [IX_ViewSample]

On [dbo].[SampleView]

(Id2 Asc)

Go

 

— Alterando o tipo de contagem de dados —

Create View SampleView

With SchemaBinding

As

Select COUNT_BIG(*) TableCount,

Id2

From dbo.MySampleTable

Group By Id2

 

— Criando o Índice —

Create Unique Clustered Index [IX_ViewSample]

On [dbo].[SampleView]

(Id2 Asc)

Go

 

— Short Script 4 – Utilizando o comando Intersect com valores Char e Int —

Create Table #A (x Char(2));

 

Insert Into #A Values (‘1’);

Insert Into #A Values (‘6’);

Insert Into #A Values (‘2’);

Insert Into #A Values (‘3’);

Insert Into #A Values (‘5’);

Insert Into #A Values (‘5’);

Insert Into #A Values (‘6’);

Insert Into #A Values (‘9’);

Go

 

Create Table #B (M BigInt);

 

Insert Into #B Values(5);

Insert Into #B Values(5);

Insert Into #B Values(6);

Insert Into #B Values(7);

Insert Into #B Values(7);

Go

 

SELECT x AS ‘Select #1’ FROM #A

INTERSECT SELECT M FROM #B;

 

— (Select #2)

SELECT DISTINCT(x) AS ‘Select #2’

FROM #A

LEFT OUTER JOIN #B

ON #A.x = #B.M

 

— (Select #3)

SELECT DISTINCT(x) AS ‘Select #3’

FROM #A

LEFT OUTER JOIN #B

ON #A.x = #B.M

 

— (Select #4)

SELECT DISTINCT(x) AS ‘Select #4’

FROM #A

INNER JOIN #B

ON #A.x = #B.M

 

— (Select #5)

SELECT x AS ‘Select #5’

FROM #A

INNER JOIN #B

ON #A.x = #B.M

 

— Short Script 5 – Criando User Function com base na Tabela Price —

CREATE FUNCTION CalcPrest (@C money, @i numeric(9,5), @n int)

returns table as return

SELECT Cast(@C *

(Power((1 + (@i / 100)), @n) * (@i / 100)) /

(Power((1 + (@i / 100)), @n) -1)

as money) as Prestação;

go

 

— Short Script 6 – Select “*” não retornando todas as colunas de uma tabela —

— Exemplo 1 —

DROP TABLE #temp;

 

CREATE TABLE #temp (

RowID INT IDENTITY PRIMARY KEY CLUSTERED,

Name VARCHAR(25),

Column1 INT SPARSE,

Column2 INT SPARSE,

Column3 INT SPARSE,

Column4 INT SPARSE,

ColumnSet XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);

 

INSERT INTO #temp (Name, Column1) VALUES (‘Row1’, 1);

INSERT INTO #temp (Name, Column1, Column2) VALUES (‘Row2’, 2, 2);

INSERT INTO #temp (Name, Column1, Column2, Column3) VALUES (‘Row3’, 3, 3, 3);

INSERT INTO #temp (Name, Column1, Column2, Column3, Column4) VALUES (‘Row4’, 4, 4, 4, 4);

INSERT INTO #temp (Name, Column1, Column3) VALUES (‘Row5’, 5, 5);

INSERT INTO #temp (Name, Column3, Column4) VALUES (‘Row6’, 6, 6);

 

SELECT * FROM #temp;

— Exemplo 2 —

DROP TABLE #temp;

 

CREATE TABLE #temp (

RowID INT IDENTITY PRIMARY KEY CLUSTERED,

Name VARCHAR(25),

Column1 INT SPARSE,

Column2 INT SPARSE,

Column3 INT SPARSE,

Column4 INT SPARSE);

 

INSERT INTO #temp (Name, Column1) VALUES (‘Row1’, 1);

INSERT INTO #temp (Name, Column1, Column2) VALUES (‘Row2’, 2, 2);

INSERT INTO #temp (Name, Column1, Column2, Column3) VALUES (‘Row3’, 3, 3, 3);

INSERT INTO #temp (Name, Column1, Column2, Column3, Column4) VALUES (‘Row4’, 4, 4, 4, 4);

INSERT INTO #temp (Name, Column1, Column3) VALUES (‘Row5’, 5, 5);

INSERT INTO #temp (Name, Column3, Column4) VALUES (‘Row6’, 6, 6);

 

SELECT * FROM #temp;

 

— Short Script 7 – Trabalhando com XML em conjunto com SP_XML_PrepareDocument –

Declare @Table As Table (SINo Int, Name Varchar(500), Salary Money)

Declare @XMLIntLog As XML

Declare @IDoc Int

 

Set @XMLIntLog = Null

Insert Into @Table Values(1,’SES’,10000)

Insert Into @Table Values(2,’SRS’,40000)

Insert Into @Table Values(3,’SS’,50000)

Set @XMLIntLog = (Select SINo, Name, Salary from @Table Tab For XML Auto, Root(‘Root’), elements)

 

Exec sp_xml_preparedocument @IDoc Output, @XMLIntLog

 

Select SINo, Name, Salary from OpenXML(@iDoc, ‘/Root/Tab’,7)

With(SINo Int, Name Varchar(500), Salary Money)

 

Exec sp_xml_removedocument @IDoc

 

— Short Script 8 – Utilizando Sparse Columns e Sparse Columns Sets —

CREATE TABLE dbo.Table1 (

RowID INTEGER IDENTITY PRIMARY KEY CLUSTERED,

DateTimeStamp DATETIME DEFAULT GETDATE(),

Col1 INTEGER SPARSE,

Col2 INTEGER SPARSE,

Col3 INTEGER SPARSE,

TblColumnSet XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);

 

INSERT INTO dbo.Table1 (Col1) VALUES (1), (2);

INSERT INTO dbo.Table1 (Col2) VALUES (3), (4);

INSERT INTO dbo.Table1 (Col3) VALUES (5), (6);

INSERT INTO dbo.Table1 (TblColumnSet) VALUES (‘<Col1>1</Col1><Col2>2</Col2><Col3>3</Col3>’);

 

SELECT RowID, DateTimeStamp, Col1, Col2, Col3, TblColumnSet

FROM dbo.Table1;

 

Agradeço a sua visita, espero que este material posso te ajudar, qualquer dúvida, sugestão ou crítica post o seu comentário.

Até mais.

Material de Apoio – Março 2015


Salve, salve, bom dia.

Olá você, bordão bastante conhecido dos amantes de futebol!!! Estou retornando minhas atividades após 20 dias de descanso (férias), ainda em um ritmo bem abaixo do normal, mas vamos em frente.

Mesmo de férias, procurei tirar alguns dias para estudar um pouco mais sobre o SQL Server e o fantástico mundo de Banco de Dados, meu deus, a cada dia que passa vejo que precisamos estar sempre atentos as mudanças e pequenos detalhes, pois como todas ás diversas áreas de conhecimento, a área de banco de dados esta passando por transformações fora do comum.

Durantes estes vinte dias, busquei informações e conhecimentos em diversos posts de amigos DBAs aqui do Brasil e principalmente dos EUA, posso dizer que valeu muito a pena, consegui renovar em muito a minha biblioteca de Scripts, bem como, os meus conceitos.

Dentre os quais, gostaria de compartilhar com vocês, alguns dos Scripts que eu brinquei nestes período e que utilizei em alguns exercícios que estou elaborando para meus alunos nas disciplinas de banco de dados.

Neste post, você vai encontrar exemplos e scritps sobre:

– Bitwise;
– Datatype Sysname;
– Diferença entre Select com Schema e Select sem Schema;
– Objetos em uso;
– Operador XOR;
– Relacionamento de Tabelas;
– Sys.dm_io_virtual_file_stats;
– Transações Implícitas; e
– Transactio Log.

Vale ressaltar que todos os scritps estão renomeados com a extensão .docx ao final do seu nome, para garantir a disponibilidade do arquivo na plataforma do WordPress, após fazer o download remova a extensão .docx, mantendo ao final a extensão .sql.

Segue abaixo a relação de Scripts:

Mais uma vez obrigado por sua visita, fique a vontade para compartilhar com seus contatos estes scritps, como também, sugerir ideias, críticas, sugestões ou comentários.

Ate mais.