segunda-feira, 30 de maio de 2016

OFF-TOPIC Como melhorar o sinal Wi-fi do seu roteador ..

     Hoje em dia, é difícil imaginar um computador em casa sem acesso à rede via Wifi, pois a maioria das pessoas já prefere o uso de notebooks pela comodidade e praticidade. Outro fator importante são os smartphones: quem utiliza esses aparelhos sabe que não é possível confiar nas redes 3G o tempo todo, e a primeira oportunidade de pular para o Wifi é sempre bem-vinda.
O problema é que algumas vezes esse tipo de conexão pode apresentar problemas, seja por interferências de outros equipamentos, pelo mau posicionamento do roteador ou até mesmo pela baixa qualidade do aparelho. A seguir, apresentamos 10 dicas muito boas para melhorar de vez todos os problemas que você possa ter com seu Wifi.

1. Mantenha seus equipamentos atualizados

Assim como todos os equipamentos eletrônicos e tecnologias, o Wifi está em constante evolução, portanto, sempre que puder, você deve atualizar os seus aparelhos para garantir sempre mais velocidade e confiabilidade na transmissão de dados.Existem vários padrões IEEE 802.11 para redes sem fio atualmente, como A, B, G, N e AC. Enquanto o padrão B transfere os dados com até 11 Mbps de velocidade, os padrões A e G conseguem transmitir informações em até 54 Mbps. O formato N consegue enviar e receber dados em até 600 Mbps, e o AC chegaria ao 1 Gbps. Para conseguir atingir velocidades maiores de transmissão, você precisa ter um roteador que seja capaz de transmitir no padrão AC e uma placa de rede compatível com esse formato — mas as mais comuns são limitadas ao padrão N. As placas de rede mais antigas podem ser substituídas com facilidade; já os roteadores precisam ser trocados por modelos mais novos.

2. Posicione o seu roteador no melhor lugar possível

Mesmo que o seu roteador não combine com a decoração de sua sala de estar, não é aconselhável que você o esconda atrás de algum móvel. É extremamente importante que ele fique posicionado em um local alto e completamente livre de obstáculos. Afinal de contas, ele é um transmissor de sinal e precisa de espaço.O ideal é deixar o equipamento no local mais central de sua casa, assim você garante a melhor cobertura de sinal possível até nos cantos mais distantes. Outra dica importante é manter o aparelho em um lugar alto, como em cima de alguma prateleira, ou preso na parede mesmo. Algo que muitas pessoas fazem ao perceber que o sinal está fraco é posicionar as antenas do roteador em direção ao local em que você está. Isso é completamente errado, afinal de contas, o roteador não é uma antena de TV. Portanto, para garantir a qualidade do sinal, deixe sempre as antenas do aparelho apontadas para cima.

3. Procure um canal de transmissão que esteja liberado.

Os roteadores transmitem ondas de rádio e, para que o sinal possa trafegar sem problemas, ele precisa de um canal de comunicação que não interfira em outros aparelhos. Como hoje em dia quase todo mundo possui um equipamento desses em casa, é normal que existam conflitos, principalmente se eles utilizarem o mesmo canal de transmissão.Como descobrir qual o canal mais adequado para utilizar? Existe um programa para aparelhos Android muito eficiente chamado Wi-Fi Analyser que pode responder essa pergunta. Após descobrir qual dos canais está sendo menos utilizado, reprograme o seu roteador e aproveite o sinal de rede muito mais estável.




4. Livre-se de aparelhos que causam interferência

Além de outros roteadores próximos, existem diversos outros equipamentos que podem causar interferência em sua rede. Telefones sem fio e fornos de micro-ondas estão entre os principais responsáveis por isso. Vale lembrar que até mesmo a construção dos banheiros pode ser um obstáculo.Para evitar esse problema, você pode adquirir aparelhos de telefone ou roteadores com frequências diferentes. Caso instalar novos equipamentos não seja uma opção, simplesmente posicioná-los longe um do outro pode resolver os problemas na maioria dos casos.

5. Aumente a segurança de sua rede e se livre dos ladrões de sinal

Mesmo que o seu roteador já tenha uma senha cadastrada, pode ser que ela seja muito simples e algum vizinho oportunista esteja roubando o sinal de sua rede, deixando-a lenta. A melhor maneira de evitar que esse tipo de coisa aconteça é escolher um padrão de segurança mais avançado, como o WPA. A senha deve ser difícil, sempre misturando letras e números. Assim como todos os códigos de segurança, você deve mudá-lo frequentemente. Para evitar que outras pessoas identifiquem a sua rede e possam tentar “adivinhar” a senha, evite usar nomes que indiquem de onde é o sinal, como “Wifi do fulano”.

Uma última medida, um pouco mais radical, é limitar o número de conexões ao seu roteador pelo endereço MAC da placa de rede. Funciona assim: o acesso ao equipamento fica completamente bloqueado, a não ser para o código MAC que você liberou, no caso, o seu notebook ou smartphone, por exemplo.Essa é uma boa medida de segurança, mas pode ser um incômodo ter que adicionar o MAC de cada amigo seu que vá visitar a sua casa e precise utilizar a sua rede.

6. Controle aplicativos que sequestram toda a banda

Programas de download, como BitTorrent, jogos online ou streaming de vídeo, podem comprometer muito o sinal de sua rede Wifi. Se em sua casa várias pessoas compartilham a mesma rede, é possível que uma máquina esteja consumindo a maior parte da banda e limitando o uso para os outros computadores.Para resolver esse problema, você pode utilizar uma ferramenta presente em quase todos os roteadores Wifi, que é o QoS (Quality of Service ou simplesmente Qualidade de Serviço). O que o QoS faz é priorizar a transferência dos dados por protocolos, ou seja, você pode colocar chamadas em vídeo na frente do Torrent  ou, se você quiser, pode bloquear completamente algum programa.

7. Aumente o sinal do seu Wifi com truques caseiros

Se nenhuma das alternativas anteriores funcionou, você pode tentar modificar a antena do seu notebook ou roteador. Existem diversas maneiras simples de amplificar o sinal de sua rede Wifi. Você pode simplesmente comprar uma antena mais nova e mais potente ou seguir aquelas velhas dicas do truque da lata batata pringles e latas de aluminio e amplificar o sinal de sua rede utilizando a embalagem. Nós já fizemos essa experiência e nos certificamos de que ela funciona mesmo rs.


8. Aumente a intensidade do sinal de seu roteador hackeando o aparelho

Talvez hackear seja um termo exagerado, uma vez que você vai simplesmente reinstalar um novo firmware no roteador. O firmware é como se fosse o sistema operacional do equipamento, controlando todas as suas funções.Existe uma configuração que costuma resolver muitos dos problemas de sinal, que é o aumento da potência das antenas. Infelizmente, poucos roteadores trazem essa opção de fábrica, pois ela pode danificar a máquina, já que a intensidade do sinal aumenta em troca da sobrecarga em alguns componentes. Se você já tentou de tudo e não obteve sucesso, por que não tentar essa modificação? Existem firmwares modificados que podem transformar o seu equipamento antigo em uma verdadeira máquina cheia de recursos modernos, entre eles a possibilidade de amplificar o poder das antenas e outras modificações. Os mais conhecidos são o DD-WRT e o Open-WRT. Apesar de a instalação desses sistemas ser um pouco complicada, no final o processo acaba valendo a pena.

9. Transforme o seu antigo roteador em um repetidor de sinal

Se algum cômodo de sua casa não consegue receber sinal adequadamente, você pode colocar um roteador antigo no meio do caminho para amplificar o alcance da rede. Infelizmente, nem todos os roteadores trazem essa função de fábrica.A boa notícia é que quase qualquer roteador comum pode ser um repetidor de sinal. Para fazer isso, você pode instalar o DD-WRT, como já foi mencionado anteriormente. Depois de modificar o aparelho, basta configurar o equipamento para que ele retransmita o sinal do primeiro roteador.

10. Programe o seu roteador para que ele reinicie esporadicamente

Muitas vezes o roteador pode travar por causa do aquecimento. Para restaurar a “sanidade” do equipamento, você pode reiniciá-lo de tempos em tempos manualmente. Isso é outra vantagem de nosso amigo DD-WRT. Com ele, você pode mandar seu roteador reiniciar todas as noites, por exemplo.  Isso é muito prático se ele ficar em um local de difícil acesso.

*
abaixo apresentamos animação de como as ondas Wi-Fi se propagam pelo ambiente.


terça-feira, 24 de maio de 2016

Monitoring - Notificação em casos de restart do servidor SQL SERVER

bom dia pessoal, desculpem pelo intervalo de postagem devido aproblemas profissionais,
entretando agora teremos um pouco a mais de tempo para blog e duvida dos usuarios.

Tempos gostaria de demonstrar como criar uma notificação de quando a sua instância (serviço)
for reiniciada ou acontecer um faillover (falha); um assunto crítico bem especulado, e porem longo.

Quando administramos muitas instâncias, pode ocorrer alguns eventos como um restart de uma instância ou um faillover e acabar passando despercebido pelos admins, e derrubando todos os acessos momentaneamente, por isso, toda vez que ocorre um destes eventos inexperados criaremos uma notificação por email para posteriormente analisar o que realmente ocorreu;

GO
SELECT servicename, startup_type_desc, status_desc, last_startup_time
FROM sys.dm_server_services

Esta notificação do evento será executada atraves de um job que é executado toda vez em que o SQL agent for iniciado (reiniciado), enviaremos um e-mail notificando que houve um evento no services, identificando qual a instância foi reiniciada.

-- inicio script 
DECLARE
    @msg NVARCHAR(MAX),
    @instancia VARCHAR(100),
    @assunto VARCHAR(100);

SELECT
       @instancia = @@SERVERNAME;
SET @assunto = 'A instancia ' + @instancia + ' Foi reiniciada';
SET @msg = '<p> ' + @instancia + ' A Instancia foi reniciada.</p>';

SET @msg = @msg + '<table border="2" cellspacing="2" cellpadding="2">';

SET @msg = @msg + '<tbody align="left" style="font-family:Arial; font-size: 11;" 
                   <TR><TH>Service Name</TH><TH>Startup Type</TH><TH>Status</TH>
                   <TH>Startup Time</TH></TR></tbody>';

SELECT
    @msg = @msg + '<tbody align="left" style="font-family:Arial;
                    font-size: 11;" <TR><TD>' + servicename + '</TD><TD>' 
          + startup_type_desc + '</TD><TD>' + status_desc 
                   + '</TD><TD>'+ CAST(last_startup_time AS VARCHAR(30))
                   + '</TD></TR></tbody>'
FROM
    sys.dm_server_services;
EXEC 
    msdb.dbo.sp_send_dbmail
    @profile_name = 'MSSQLSERVER',  
    @recipients = 'email_destino@email.com',
    @subject = @assunto, 
    @body = @msg, 

    @body_format = 'HTML';

-- fim script

Para criar o job basta expandir o SQL agent, e na guia steps colamos o script acima; Na guia schedules optamos por  “Start automatically when SQL Server Agent starts”

















Feito, quando ocorrer algum restart receberemos um e-mail (semelhante a este)
no destinario configurado e seus respectivos database;











Para criar um notificação em caso de failover, é um procedimento um pouco diferente,
consideramos mais complexo para isso precisamos de um futuro topico detalhando cada passo;

acompanhem o blog na proxima semana o script para monitoramento de failover;
Duvidas, problemas, e melhorias no email particular gudamatto@gmail.com

Grande abraços, sucesso ;)


Para criar este monitoramento usamos a sys.dm_server_services, 
para mais informações complemente a leitura em (https://msdn.microsoft.com/pt-br/library/hh204542%28v=sql.120%29.aspx)

segunda-feira, 25 de abril de 2016

Scripts: Clear Cache (buffers) SQL SERVER

O cache de memória é uma área reservada pelo SQL Server, com o objetivo de acelerar a execução de Stored Procedures, ou transações que podem estar sendo processadas com uma maior frequência de requisições; através dos comandos  DBCC (Database Console Commands) podemos realizar os seguintes procedimentos:

DBCC DropCleanBuffers   (Eliminar as páginas de buffer limpas)

DBCC FreeProcChace      (Eliminar todas as entradas do CACHE de Procedures)
DBCC FreeSystemCache  (Limpar as entradas de Cache não utilizadas)

syntax:
DBCC DROPCLEANBUFFERS           
GO
DBCC FREEPROCCACHE                  
GO
DBCC FREESYSTEMCACHE ('ALL')    
GO

returns:


DBCC execution completed. If DBCC printed error messages, contact your system administrator.

quarta-feira, 20 de abril de 2016

Scripts: Informações do tamanho das Bases SQL

O script a seguir tem como unica finalidade de retornar o tamanho atual das bases (levando em conta apenas os arquivos de dados). Uma ótima utilidade para o script é persistir essas informações em um repositório pra depois fazer outras análises (Capacity Plan, por exemplo), por isso adicionalmente, existe um campo de data na saída da variável. Segue exemplo:

DECLARE 
@DBSize AS TABLE
( DBName varchar(100), DBStatus varchar(20), Recovery_Model varchar(100), Database_Path varchar(500), File_Size float, Space_Used float, Free_Space float, File_Size_String varchar(100) NULL, Space_Used_String varchar(100) NULL, Free_Space_String varchar(100) NULL, Total_Space_MB varchar(100) NULL )
INSERT INTO 
@DBSize
(Dbname, DBStatus, Recovery_Model, Database_Path,file_Size,Space_Used, Free_Space)
EXEC SP_MSFOREACHDB 'USE [?]; SELECT DB_NAME() AS DbName, CONVERT(varchar(20),DatabasePropertyEx(''?'',''Status'')) , CONVERT(varchar(20),DatabasePropertyEx(''?'',''Recovery'')), physical_name, size*8.00 AS File_Size, FILEPROPERTY(name, ''SpaceUsed'')*8.00 as Space_Used, size*8.00 - FILEPROPERTY(name, ''SpaceUsed'')*8.00 AS Free_Space FROM 
sys.database_files where type=0'
UPDATE @DBSize SET File_Size_String = CASE WHEN (File_Size/1024) > 1023 THEN Convert(Varchar(50),Convert(decimal(20,2),(File_Size/1024/1024.00))) + ' GB' ELSE Convert(Varchar(50),Convert(decimal(20,2),(File_Size/1024.00))) + ' MB' END, Space_Used_String = CASE WHEN (Space_Used/1024) > 1023 THEN Convert(Varchar(50),Convert(decimal(20,2),(Space_Used/1024/1024.00))) + ' GB' ELSE Convert(Varchar(50),Convert(decimal(20,2),(Space_Used/1024.00))) + ' MB' END, Free_Space_String = CASE WHEN (Free_Space/1024) > 1023 THEN Convert(Varchar(50),Convert(decimal(20,2),(Free_Space/1024/1024.00))) + ' GB' ELSE Convert(Varchar(50),Convert(decimal(20,2),(Free_Space/1024.00))) + ' MB' END,
Total_Space_MB = Convert(decimal(20,2),(File_Size/1024.00)) SELECT DBName as [Database], DBStatus, Recovery_Model, File_Size_String, Space_Used_String, Free_Space_String, Total_Space_MB, Database_Path, GETDATE() AS Data FROM @DBSize ORDER BY File_Size DESC, Space_Used DESC, Free_Space DESC

Scripts: Ultimo restart do servidor SQL SERVER

Em alguns bate papos do café, foi questionado se era possível determinar a quanto tempo um servidor SQL SERVER estava operando. Se existiam algumas funções nativas, para detalhar data e hora do ultimo restart. Funções atualmente não, não que eu as conheça, mas é possivel determinar há quanto a instancia do service esta UP, podemos gerir as seguintes informações:

USE [master]
-- Verifica quando o TEMPDB foi criado (durante o startup do serviço)
DECLARE @starttime datetime
SET @starttime = (SELECT crdate FROM sysdatabases WHERE name = 'tempdb' )

--Hora atual
DECLARE @currenttime datetime
SET @currenttime = GETDATE()

-- Criação das variaveis para dias, horas e minutos
DECLARE @difference_dd int
DECLARE @difference_hh int
DECLARE @difference_mi int

--Determina quantos minutos passaram desde a criação do TEMPDB 
SET @difference_mi = (SELECT DATEDIFF(mi, @starttime, @currenttime))

--Determina quantos dias passaram desde a criação do TEMPDB
SET @difference_dd = (@difference_mi/60/24)

--Subtrai os dias dos minutos
SET @difference_mi = @difference_mi - (@difference_dd*60)*24

--Determina o número de horas que passaram desde a criação do TEMPDB
SET @difference_hh = (@difference_mi/60)

-- Subtrai as horas dos minutos
SET @difference_mi = @difference_mi - (@difference_hh*60)

--Mensagem 
PRINT 'Time since SQL Server service was started: ' +

CONVERT(varchar, @difference_dd) + ' days 'CONVERT(varchar, @difference_hh) + ' hours ' + CONVERT(varchar, @difference_mi) + ' minutes.'


Depois é só jogar tudo pra uma procedure e executar direto;
Fica mais pratico ;)

Resultado:

Scripts: Usuários Conectados LOCKS - SQL SERVER

Em certos momentos cotidianos pode ser que nos deparamos com situações aonde é necessário descobrir qual usuários estão conectados ao SQL Server ("leia-se travando o acesso a base e atrasando todo mundo") contudo muitas vezes não basta somente descobrir qual login de usuário esta conectado ou qual operação esta consumindo mais recurso dos servidores, pois diversas aplicações geralmente compartilham de um mesmo usuário para se conectar, sendo até um próximo assunto para discutindo futuramente em tópicos de segurança de dados, onde cenário ideal é cada aplicação possuir um usuário próprio tão somente para uso exclusivo da aplicação.
Para maiores detalhes do consumo podemos estar executando o script a seguir,
que lhe retorna uma grande gama de informações mais detalhadas:
SELECT 

t1.session_id,
     CONVERT(varchar(10), t1.status)  AS status,
     CONVERT(varchar(15), t1.command) AS command,
     CONVERT(varchar(10), t2.state)   AS worker_state,

w_suspended =
CASE t2.wait_started_ms_ticks
  WHEN 0 THEN 0
  ELSE t3.ms_ticks - t2.wait_started_ms_ticks
END,
w_runnable =
CASE t2.wait_resumed_ms_ticks
  WHEN 0 THEN 0
  ELSE t3.ms_ticks - t2.wait_resumed_ms_ticks
END
FROM
sys.dm_exec_requests AS t1 INNER JOIN sys.dm_os_workers AS t2
ON t2.task_address = t1.task_address

CROSS JOIN sys.dm_os_sys_info AS t3
WHERE 
t1.scheduler_id IS NOT NULL
ORDER BY 
t1.session_id DESC;
GO



Resultado:


segunda-feira, 18 de abril de 2016

Funções: String_Split() - SQL Server 2016

Microsoft SQL Server 2016 e String_Split(), agora ficou fácil dividir uma string.

Fala galera, boa tarde, segunda – feira de impeachment, eita dia complicado, começo de semana é tenso, pois saber que mais um final de semana se passou . Seguindo a onda de informações, anúncios, posts, entre outras formas de divulgação sobre o Microsoft SQL Server 2016, hoje vou destacar mais um pouco sobre esta nova versão e destacar mais uma das suas novidades, estou me referindo a nova Table Value Function String_Split(). Algo que realmente era muito pedido pelos desenvolvedores e que a Microsoft demorou um pouco para reconhecer a sua importância, mas na versão 2016 ela está presente e será muito útil.
String_Split()
Pode-se dizer que é uma daquelas funções desejadas por todos os profissionais que trabalham com desenvolvimento e necessitam em algum momento realizar o chamado split de uma string. Se você não sabe ou conhece este termo, split pode ser entendido como fatiar, dividir, cortar, quebrar em pedaços.Fazendo uma analogia, a string_split() vai fazer exatamente isso com uma string, transformando a mesma em pequenas outras strings (substrings ou partes de uma string).
Funcionalidade ou capacidade considerado por muitos como algo realmente complexo se der feito por um SGBD – Sistema Gerenciador de Banco de Dados, ainda mais para o SQL Server se pensarmos que até a versão 2014 tínhamos a necessidade de customizar este tipo de necessidade. Mas que para nossa alegria a Microsoft introduziu este recurso que provavelmente e o que tudo indica a mesma vai fazer parte da versão final do SQL Server 2016.
Como utilizar a String_Split()
Criada para ser utilizada de maneira rápida e simples, a String_split é composta pode dois parâmetros string compatíveis com os tipos de dados: (nvarcharvarcharnchar ou char) para a string que desejamos supostamente dividir em conjunto com o caractere reconhecido como “divisor” ou “separador”, que também deve ser informado em um tipo de string compatível com os tipos de dados: nvarchar(1)varchar(1)nchar(1) ou char(1)).
Outra característica muito interessante desta função é a maneira que os dados são apresentados e retornados para usuário, onde podemos ter o retorno do split da string em uma coluna com diversas linhas representando os fragmentos “pedaços” ou “partes” da string, como também um valor caractere no tipo de dados nchar ou nvarchar de acordo com o tipo de dado utilizado, respeitando o tamanho do dado identificado no momento da fragmentação da string. Caso não seja reconhecido o tipo de dados original da string, o resultado da sua fragmentação será retornado com o tipo de dados varchar.
Exemplos
— Exemplo 1 – Separando de forma simples uma string –
SELECT * FROM STRING_SPLIT(‘Gustavo,Damatto,SQL,Server’,’,’)
GO
 Result:
Gustavo
Damatto
SQL 
Server
 — Exemplo 2 – Fazendo uso de variáveis como parâmetros de entrada de valores –
DECLARE @string VARCHAR(100) = ‘Microsoft,SQL Server,2016,RC0′,
@separador CHAR(1) =’,’
SELECT * FROM STRING_SPLIT(@string,@separador)
GO
 Result:
Microsoft
SQL Server
2016
RC0

— Exemplo 3 – Armazenando o resultado da divisão de uma string em uma nova tabela –
DECLARE @string VARCHAR(100) = ‘Microsoft,SQL Server,2016,RC0′,
@separador CHAR(1) =’,’
SELECT * INTO #SplitTable FROM STRING_SPLIT(@string,@separador)
GO
 — Visualizando a estrutura da tabela —
sp_columns #SplitTable
GO
 — Consultando os dados da tabela —
select * from #SplitTable
GO
 * Após executar a system stored procedure sp_columns podemos notar que o tamanho e tipo de dados da coluna value criada através do select…into foi definido como varachar() sendo este o tipo de dados padrão utilizado pela String_Split() para garantir compatibilidade no armazenamento e apresentação de dados oriundos de uma outra tabela. 
— Exemplo 4 – Apresentando a mensagem quando o separador de string for definido com mais de um caracter —
DECLARE @string VARCHAR(100) = ‘gudamatto#@gmail#@com’,
@separador CHAR(2) ='#@'
SELECT * FROM STRING_SPLIT(@string,@separador)
GO
Como pode ser observado o Microsoft SQL Server 2016 vai lançar e apresentar uma mensagem de erro com o código 214 informando que a quantidade de caracteres ou melhor dizendo que o tamanho utilizado para o parâmetro separador foi definido acima de um caractere, sendo que, este parâmetro só identifica e reconhece um único caractere.
Resul
Msg 214, Level 16, State 11, Line 3
Procedure expects parameter ‘separator’ of type ‘nchar(1)/nvarchar(1)’.

— Exemplo 5 – Apresentando o comportamento da String_Split() quando um parâmetro apresenta valor nulo –
SELECT * FROM STRING_SPLIT(‘scriptsemsql,blogspot,com’,NULL)
GO
 Para este exemplo 5 o comportamento do SQL Server 2016 é exatamente o mesmo do exemplo 4, onde será apresentada uma mensagem de erro informando que o tamanho informado no parâmetro separado, foi definido acima de um caractere.
Result
Msg 214, Level 16, State 11, Line 3
Procedure expects parameter ‘separator’ of type ‘nchar(1)/nvarchar(1)’.

 — Exemplo 6 – Apresentando o comportamento da String_Split() quando o carácter do final da string é o mesmo utilizado como separador –
SELECT * FROM STRING_SPLIT(‘Conhecendo,SQL Server,2016,’,’,’)
GO
 Este é um cenário bem interessante e pode ocorrer a qualquer momento, nesta situação o SQL Server 2016 vai trabalhar da mesma forma que os outros exemplos, analisando e identificando a string e posteriormente fazendo a fragmentação com base no caractere separador, mesmo que este seja um caractere utilizado no final da string.
Note que que criada 4 linhas de registro sendo que a última não apresentará valores por será reconhecida e tratada como uma linha nula ou em branco.
Result
Conhecendo
SQL Server
2016
 Legal, legal, acredito que agora ficou ainda mais fácil de entender e compreender como a String_Split() é fácil de ser utilizado e principalmente a maneira que os dados são apresentando e retornado para usuário. Desta forma, vou encerrar mais este artigo por aqui, quero também aproveitar para disponibilizar abaixo uma relação de links sobre os principais posts referentes ao SQL Server 2016 que estou desde 2015 publicando.
* alguns dos exemplos apresentados aqui foram elaborados e executados no banco de dados de exemplo AdventureWorks2016 CTP3, caso venha tenha interesse em realizar o download desta sample database, utilize o link: https://www.microsoft.com/en-us/download/details.aspx?id=49502
Acesse também da documentação oficial Microsoft sobre a String_Split(): https://msdn.microsoft.com/en-us/library/mt684588.aspx

Conclusão
Como você pode observar uma das mais esperadas funcionalidades foi adicionada ao SQL Server, a capacidade de fragmentar, dividir, fatiar uma string em pequenas partes ou substrings. Recurso mais que necessário e importante para qualquer desenvolver ou profissional de banco de dados que necessita analisar um texto “string” e através de um caractere denominado separador delimitar como pode ser gerada fragmentos deste texto.
A cada novo build liberado pela Microsoft podemos observar e notar o grande trabalho e esforço que esta sendo feito para transformar o Microsoft SQL Server 2016 na maior e principal versão do produto desde o grande salto dado em 2005 com o lançamento naquele momento da versão 2005.
Funções similares ao String_Split() estão sendo cada vez mais disponibilidades e adicionadas ao produto como forma de fazer com que o SQL Server se torne uma plataforma única de desenvolvimento, administração, armazenamento e gestão de banco de dados, isso representa uma grande evolução e atenção das equipes de desenvolvimento e engenheiros do produto em atender e satisfazer a comunidade técnica que se dedica a estudar e conhecer cada vez mais o SQL Server.
Acredito que os exemplos apresentados aqui conseguir mostrar a simplicidade de se trabalhar com esta nova funcionalidade, ilustrando sua simplicidade no uso e forma de obter os resultados.
Mais uma vez agradeço a sua atenção, seu interesse em visitar o meu blog, espero encontra-lo em outras oportunidades. Deixe seus comentários, críticas e sugestões, até a próxima abraços.