quinta-feira, 15 de dezembro de 2016

Conheça o Google BigQuery

O Google apresentou seu serviço de análise de Big Data, o BigQuery. 
(Solução voltada para análise interativa de grandes conjuntos de dados).

O Google lançou seu serviço de Big Data, o BigQuery, desde meados de 2012, pois é, 
Se a novidade promete agradar? Me parece que não muito, com a promessa de analisar os terabytes de dados com apenas um clique. O serviço, baseado em nuvem, combina o armazenamento de dados NoSQL com os recursos de pesquisa em linguagem SQL

Solução é voltada para análise interativa de grandes conjuntos de dados. O Google afirmou que o BigQuery não é uma base de dados isolada, sendo contratado com a solução de hospedagem em nuvem, o serviço Google Cloud SQL baseado em MySQL.

Como sistemas NoSQL, o BigQuery não usa esquemas fixos; o Google disse que os dados normalmente são adicionados usando um pequeno número de grandes dimensões, que serão arquivos de tabelas Append Only (gravados apenas em modo incrementais e não podem ser removidos e renomeados. Além disso, novos links não são criados para estes arquivos). O serviço suporta consultas ad-hoc, relatórios, exploração de dados, ou até mesmo aplicativos baseados na Web que funcionam com esses conjuntos de terabytes de dados. Os usuários interagem com o serviço através de uma ferramenta , o navegador BigQuery, uma ferramenta de linha de comando, ou através de chamadas para uma API baseada em RestT usando Java, Python, ou outras línguas.

Publicidade

A principal utilização do serviço é provável que seja a análise de dados de publicidade da propria plataforma Google, que já reside em cloud da companhia. "Quando um anunciante quer entender o ROI [retorno sobre investimento] ou a eficácia de uma campanha de palavra-chave em execução em todo o mundo, tem um grande problema de Big Data", afirmou Ju-Kay Kwek, gerente de produto da equipe Cloud Platform, durante a preview público do BigQuery.

Os clientes do Google Adwords normalmente extraem dados do serviço com API do AdWords, a fim de construir no bancos de dados locais para análise posterior. Mas esses bancos de dados muitas vezes se tornam de difícil controle, exigindo sharding (ou uma partição horizontal em um motor de banco de dados ou de pesquisa) um retrabalho complexo, já que as etapas de indexação são organizadas de tal forma que "os clientes às vezes perdem a noção das questões que eles queriam perguntar por causa do tempo que o dado fica indisponível ", disse Kwek.

Os clientes também poderão fazer upload de seus próprios dados no BigQuery, e o Google contará com uma variedade de recursos para desenvolvedores externos. Usuários beta do serviço assumiram desafios como a segmentação adWeb e e-commerce. O fornecedor de inteligência de negócios o francês We Are Cloud testou o BigQuery como uma alta escala de armazenamento de dados, para sua própria consulta, análise e visualização de dados de capacidades. A empresa diz que a tecnologia irá libertar seus clientes da árdua tarefa de gerenciar uma grande plataforma local, para consultas rápida e análise de dezenas de terabytes de dados.

Atrair grandes clientes de dados certamente reforça o negócio de armazenamento online do Google, que só tem um grande motivo para conseguir isso, por meio do Google Drive. O armazenamento de dados no serviço BigQuery custa media US$ 0,12 por gigabyte por mês para até dois terabytes, com custos decrescentes acima desse volume. A análise BigQuery  custa US$ 0,35 por gigabyte de dados processados.

Confirmando o que sempre pensamos: BigData não é para todos, nem para todas as aplicações.




















Maiores informações:
https://cloud.google.com/bigquery

quarta-feira, 30 de novembro de 2016

JOB - SQL Server agent (JOB'S Monitoring)

SQL Server agent é um serviço do Microsoft Windows que executa tarefas administrativas agendadas, que são chamadas de JOB's no SQL Server.

Detalhes e benefícios do SQL Server agent:

SQL Server agent usa o SQL Server para armazenar informações dos jobs. Os job's contêm uma ou mais etapas / steps de trabalho. Cada etapa contém sua própria tarefa; por exemplo, fazer o backup de um banco de dados. SQL Server agent pode executar um job de uma agenda, em resposta a um evento específico ou sob demanda. Por exemplo, se desejar fazer o backup de todos os servidores da empresa todo dia após o expediente, você pode automatizar essa tarefa. Agende o backup para execução após as 22:00, de segunda a sexta; se o backup encontrar um problema, o SQL Server agent poderá registrar o evento e notificá-lo.

Neste script simplista abaixo compartilhamos uma forma mais básica e tradicional de analisar e monitorar a execução dos jobs da sua instancia diariamente, podem salva na pastinha de scripts rs. Qualquer duvida melhoria ou sugestão estamos por aqui é só comentar.


abraços 

--Confirmaçao De Jobs
USE MSDB
GO

SELECT
                Name,
                CASE
                                WHEN run_status = 0 THEN 'Falha'
                                WHEN run_status = 1 THEN 'Obteve êxito'
                                WHEN run_status = 2 THEN 'Tentar Novamente'
                                WHEN run_status = 3 THEN 'Cancelado'
                ELSE 'Ação Desconhecida'
                END AS Status,
                CONVERT(CHAR,msdb.dbo.agent_datetime (
                                          [run_date], [run_time]),113
                                 ) as 'Data_Inicio_Execução',
                msdb.dbo.agent_time(run_duration) as 'Duração',
                STEP_ID as 'Step',
                Step_Name,
                Message,
                Server
FROM
                sysjobhistory jhist
                JOIN sysjobs sjob ON jhist.job_id = sjob.job_id
WHERE
                msdb.dbo.agent_datetime([run_date], [run_time])
                BETWEEN GETDATE() - 2 ANDGETDATE ()  -- busca informações de até -2 dias 
                AND step_name <> '(Job outcome)' -- ignoramos a descrição de step result
ORDER BY 
                msdb.dbo.agent_datetime([run_date], [run_time]) DESC

quarta-feira, 16 de novembro de 2016

sys.dm_exec_query_stats - SQL Server

Retorna a estatísticas de desempenho dos planos de consulta em cache no SQL Server. Esta exibição contém uma linha por instrução de consulta com cache e o tempo de espera das querys. Quando um plano é removido do cache, as estatísticas correspondentes são eliminadas desta exibição.

Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Azure.

Permissões: Requer a permissão VIEW SERVER STATE nivel de servidor.
(as estatísticas na exibição são atualizadas quando uma query é concluída)

O exemplo a seguir retorna o texto da instrução SQL e o tempo médio de CPU 
das cinco maiores consultas executadas.


SELECT TOP 5
                     total_worker_time/execution_count AS [Avg CPU Time],  
                     SUBSTRING(st.text, (qs.statement_start_offset/2)+1,   
                     ((CASE qs.statement_end_offset  
                     WHEN -1 THEN DATALENGTH(st.text)  
                              ELSE qs.statement_end_offset  
                     END - qs.statement_start_offset)/2) + 1) AS statement_text  
FROM 
                     sys.dm_exec_query_stats AS qs  
                     CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st  
ORDER BY 
                     Total_worker_time/execution_count DESC



quinta-feira, 10 de novembro de 2016

Windows Server 2016 Preview

Novidades do Windows Server 2016



Windows Server 2016 Technical Preview 

Na última versão do Windows Server 2016 Technical Preview foi introduzida algumas novidades e recursos, como Hyper-V Containers, modo de instalação Nano Server e novos recursos de segurança para proteger as máquinas virtuais.


Nano Server

Nesse modo de instalação Nano Server 2016 será possível executar uma máquina com o mínimo de componentes possível, sendo inclusive menor que a instalação Server Core disponível atualmente. No modo Nano Server você poderá instalar apenas os componentes necessários no servidor Windows Server 2016, como (Clustering, Storage_net, Hyper-V, Networking), retirando totalmente a interface gráfica e utilizando o mínimo de recurso do Servidor. Além do mais esse modo é totalmente otimizado para ambiente de nuvem e suportará o Hyper-V Containers.



Hyper-V Containers


Nas novidades do Windows Server 2016, a Microsoft anunciou o suporte para Hyper-V Containers. Nesse modo, o Hyper-V Containers irá fornecer um novo nível de isolamento para as máquinas virtuais, que antes eram reservadas apenas para máquinas físicas, e também irá manter a integração com a plataforma Docker. O Hyper-V Containers promete isolar o código em cada Containers, evitando interferências na máquina Host e nas máquinas virtuais.

Storage Replica


A algum tempo a Microsoft já estava suportando a replicação no Hyper-V, mas estava limitada para replicação assíncrona de discos rígidos virtuais. Mas isso irá mudar com as novidades do Windows Server 2016. Agora o sistema terá a capacidade de replicar volumes inteiros no nível do bloco, podendo escolher entre replicação síncrona e assíncrona. Esse recurso, chamado de Storage replica será direcionado para cenários de recuperação de desastres, onde serão suportados a replicação de servidor para servidor e de cluster para cluster.

Storage Spaces Direct

O Storage Spaces Direct já estava disponível no Windows 8 e no Windows Server 2012, mas no Windows Server 2016 houve grandes avanços na tecnologia de Armazenamento, agora com a capacidade de construir um sistema de armazenamento altamente disponível usando discos diretamente conectados em cada nó. A Resiliência entre os nós da rede no Windows Server 2016 utiliza o protocolo SMB3. O Storage Spaces Direct também irá tirar proveito de um novo hardware como NvMe SSDs, mas também irá suportar o hardware antigo como o dispositivo Sata. Para criar um cluster de Storage Spaces Direct será necessário ter no mínimo quatro nós disponíveis.

Certificação Windows Server 2016

 
Como o lançamento do sistema operacional previsto para o primeiro semestre de 2016, a certificação Windows Server 2016 já estão disponíveis para realizar o exame. E pela alta demanda por Profissionais Certificados Microsoft, os meus parceiros MCT já estão desenvolvendo os treinamentos para Certificação Windows Server 2016! Então, acesse os links abaixo para se manter informado:

Espero que tenham gostado da novidades. Até a próxima ..


quarta-feira, 9 de novembro de 2016

Microsoft Disponibiliza o SQL Server 2016 Training Kit

Microsoft disponibilizou recentemente no Microsoft Download Center o SQL Server 2016 Training Kit.
O kit é voltado para desenvolvedores, instrutores, consultores e outros profissionais que precisam saber mais sobre as principais novidades introduzidas na nova versão do SQL Server. Ele contém apresentações, demos, vídeos e outros recursos para ajudar no aprendizado
ou para montar uma sessão de treinamento.

Faça o download do SQL Server 2016 Training Kit

O SQL Server 2016 Training Kit está disponível para download gratuitamente aqui. Ele é compatível com o Windows 10, Windows 8, Windows 8.1, Windows Server 2012 R2 e Windows Server 2016.

SQL Server 2016

Lançado em junho deste ano, o SQL Server 2016 traz recursos críticos inovadores com desempenho em memória e análise operacional integrada. Os recursos de segurança abrangentes, como a tecnologia de criptografia ininterrupta (Always Encrypted), ajudam a proteger seus dados fixos e em movimento, e uma solução avançada de alta disponibilidade e recuperação de desastres acrescenta novos aprimoramentos à tecnologia AlwaysOn.
  As organizações terão visões mais aprofundadas de todos os seus dados com novos recursos que vão além da business intelligence, executando a análise avançada diretamente dentro de seus bancos de dados e apresentando visualizações avançadas para oferecer visões de negócios de qualquer dispositivo. Você também pode se beneficiar da nuvem em hiperescala, com novos cenários híbridos habilitados pela nova tecnologia de banco de dados elástico (Stretch Database), que permite expandir dinamicamente seus dados transacionais a quente e a frio até o Microsoft Azure de forma segura, para que seus dados estejam sempre à disposição para consultas, independentemente do tamanho. O SQL Server 2016 também oferece uma plataforma de banco de dados completa para a nuvem híbrida, permitindo criar, implantar e gerenciar facilmente soluções que abrangem instalações locais e na nuvem. Saiba mais sobre ele aqui!

Fontes e Direitos Autorais: Baboo.com 

quinta-feira, 22 de setembro de 2016

Prolepse SQL Injection - SQL Server part 1

SQL Injection

É um ataque no qual um código mal-intencionado é inserido em cadeias de caracteres que são passadas posteriormente para uma instância do SQL Server para análise e execução. Qualquer procedimento que construa instruções SQL deve ser verificado quanto a vulnerabilidades de injeção porque o SQL Server executará todas as consultas sintaticamente válidas que receber. Mesmo dados com parâmetros podem ser manipulados por um invasor qualificado e determinado.
A forma principal de injeção SQL consiste em inserção direta de código em variáveis de entrada de usuário, concatenadas com comandos SQL. Quando as cadeias de caracteres armazenadas são concatenadas subseqüentemente em um comando SQL dinâmico, o código mal-intencionado é executado.
O processo de injeção funciona encerrando prematuramente uma cadeia de caracteres de texto e anexando um novo comando. Como o comando inserido pode ter cadeias de caracteres adicionais anexadas a ele antes de ser executado, o malfeitor encerra a cadeia de caracteres injetada com uma marca de comentário "--". O texto subseqüente é ignorado no momento da execução.
O script a seguir mostra uma injeção SQL simples. O script cria uma consulta SQL concatenando cadeias de caracteres codificadas com uma cadeia de caracteres inserida pelo usuário:
var CidadeDestino;
CidadeDestino= Request.form ("Cidade");
var sql = "select * from dbo.Vendas where cidade = '" + CidadeDestino + "'";
Neste cenario usuário é solicitado a inserir o nome de uma cidade. 
Se ele inserir Jaboticabal, a consulta criada pelo script terá a seguinte aparência:
SELECT * FROM dbo.Vendas WHERE cidade = 'Jaboticabal'
No entanto, suponha que o usuário insira: 'Jaboticabal'; DROP TABLE dbo.VENDAS --' 
Nesse caso, a seguinte consulta é gerada pelo script:
SELECT * FROM dbo.Vendas WHERE cidade = 'Jaboticabal'; DROP TABLE dbo.VENDAS --

O ponto-e-vírgula (;) denota o término de uma consulta e o início de outra. O hífen duplo (--) indica que o restante da linha atual é um comentário e deve ser ignorado. Se o código modificado estiver sintaticamente correto, será executado pelo servidor. Quando o SQL Server processar essa instrução, o SQL Server selecionará primeiro todos os registros em dbo.Vendas onde cidade é Jaboticabal. Em seguida, o SQL Server deletaria a tabela dbo.Vendas.
Contanto que o código SQL injetado esteja sintaticamente correto, a violação não poderá ser detectada programaticamente. Portanto, é necessário validar todas as entradas de usuário e verificar com cuidado o código que executa comandos SQL construídos no servidor que você está usando. Práticas recomendadas de codificação são descritas no proximo tópico.

Acompanhe:
http://scriptsemsql.blogspot.com.br/2016/09/prolepse-sql-injection-sql-server-part-2.html

Prolepse SQL Injection - SQL Server part 2

Analise todas as entradas:


Sempre valide entrada de usuário testando tipo, comprimento, formato e intervalo. Quando você estiver implementando precauções contra entrada mal-intencionada, considere os cenários de arquitetura e implantação de seu aplicativo. Lembre-se de que programas projetados para executar em um ambiente seguro podem ser copiados para um ambiente sem segurança. As sugestões seguintes devem ser consideradas práticas recomendadas:
  • Teste o tamanho e tipo de dados de entrada e imponha limites apropriados. Isso pode ajudar a impedir excesso deliberado de buffer.
  • Teste o conteúdo de variáveis de cadeia de caracteres e só aceite valores esperados. Rejeite entradas que contenham dados binários, seqüências de escape e caracteres de comentário. Isso pode ajudar a impedir injeção de script e proteger contra explorações de excesso de buffer.
  • Quando você estiver trabalhando com documentos XML, valide todos os dados em seu esquema à medida que são inseridos.
  • Nunca construa instruções Transact-SQL diretamente da entrada do usuário.
  • Use procedimentos armazenados para validar entrada de usuário.
  • Em ambientes de várias camadas, todos os dados devem ser validados antes de serem admitidos à zona de confiança. Os dados que não passam pelo processo de validação devem ser rejeitados e um erro deve ser retornado à camada anterior.
  • Implemente várias camadas de validação. Precauções tomadas contra usuários casualmente mal-intencionados podem ser ineficazes contra determinados invasores. Uma prática mais recomendada é validar a entrada na interface do usuário e em todos os pontos subseqüentes onde ele cruza um limite confiável.
    Por exemplo, a validação de dados em um aplicativo cliente pode evitar injeção de script simples. No entanto, se a próxima camada assumir que sua entrada já foi validada, qualquer usuário mal-intencionado que possa contornar um cliente poderá ter acesso irrestrito ao sistema.
  • Nunca concatene entrada de usuário que não seja validada. A concatenação de cadeia de caracteres é o ponto principal de entrada de injeção de script.
  • Não aceite as seguintes cadeias de caracteres em campos dos quais nomes de arquivos podem ser construídos: AUX, CLOCK$, COM1 a COM8, CON, CONFIG$, LPT1 a LPT8, NUL e PRN.

Sempre que puder, rejeite entrada que contenha os caracteres a seguir.

Use parâmetros SQL de tipo seguro

A coleção Parâmetros no SQL Server fornece verificação de tipo e validação de comprimento. Se você usar a coleção Parâmetros, a entrada será tratada como um valor literal e não como código executável. Um benefício adicional de usar a coleção Parâmetros é que você pode impor verificações de tipo e comprimento. Valores fora do intervalo irão disparar uma exceção. O seguinte fragmento de código mostra o uso da coleção Parâmetros:
SqlDataAdapter myCommand = new SqlDataAdapter("Usuario", conn);
myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parm = myCommand.SelectCommand.Parameters.Add("@ID_Usuario",
SqlDbType.VarChar, 11);
parm.Value = Login.Text;
Nesse exemplo, o parâmetro @ID_Usuario é tratado como um valor literal e não como código executável. Esse valor é verificado quanto ao tipo e comprimento. Se o valor @ID_Usuario não estiver de acordo com o tipo especificado e as restrições de comprimento, uma exceção será gerada.

Filtrando a entrada

A filtragem de entrada também pode ser útil para proteger contra injeção de SQL, removendo caracteres de escape. Porém, por causa do número grande de caracteres que podem causar problemas, essa não é uma defesa confiável. O exemplo a seguir procura o delimitador de cadeia de caracteres.
private string SafeSqlLiteral(string inputSQL)
{
  return inputSQL.Replace("'", "''");
}

Cláusulas LIKE

Observe que se você estiver usando uma cláusula LIKE, os caracteres curinga ainda poderão escapar:
s = s.Replace("[", "[[]");
s = s.Replace("%", "[%]");
s = s.Replace("_", "[_]");

Revisando código para injeção SQL

Você deveria revisar todos os códigos que chamam EXECUTE, EXEC ou sp_executesql. Você pode usar consultas semelhantes à que segue para ajudá-lo a identificar procedimentos que contenham essas instruções.


SELECT object_Name(id) FROM syscomments
WHERE UPPER(text) LIKE '%EXECUTE  (%' 
OR UPPER(text) LIKE '%EXECUTE  (%'
OR UPPER(text) LIKE '%EXECUTE  (%' 
OR UPPER(text) LIKE '%EXECUTE  (%'
OR UPPER(text) LIKE '%EXEC (%' 
OR UPPER(text) LIKE '%EXEC (%'
OR UPPER(text) LIKE '%EXEC (%' 
OR UPPER(text) LIKE '%EXEC (%'
OR UPPER(text) LIKE '%SP_EXECUTESQL%'
SET @temp = N'select * from dbo.vendas where cidade ='''
+ REPLACE (@cidade,'''','''''') + N'''' 


Pensando em tudo isso a Microsoft lançou um kit de ferramentas que pretende auxiliar desenvolvedores e administradores de websites a bloquear e erradicar a recente onda de ataques de SQL Injection (Injeção SQL). 

As ferramentas são:

quinta-feira, 15 de setembro de 2016

Teste De Escalabilidade: Apache x IIS Off-Topic

Este é um teste simples de escalabilidade em comparativo entre Apache 2.2.3 e o IIS 7.










Este teste foi motivado por uma observação de clientes, que mencionam ter problemas de escalabilidade com o Apache. Eu tenho certeza que o Apache pode responder as requisições que o cliente precisa, mas por este percebemos que com a configuração padrão, isto não é possível, são necessários alguns tunings.
O Apache é o padrão do CentOS 5.5, mais atual.
O IIS é o padrão do Windows Server 2008 Enterprise.
(Obs: Todas as configurações padrões de ambas as distribuições foram mantidas default.)
O teste foi feito 3 vezes, com 10000 requisições, com concorrência de 1000, para o arquivo inicial de cada Web Server: iisstart.htm para o IIS, e index.html para o Apache.
Tanto o CentOS quanto o Windows estão em VMs, com a mesma configuração: 4GB RAM, 2 CPU. apenas uma VM foi ligada de cada vez.
IIS 7:
servidor@servidor-aplicacao:~$ ab -n 10000 -c 1000 http://192.168.56.101/issstart.html
Benchmarking 192.168.56.101 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software:        Microsoft-IIS/7.0
Server Hostname:     192.168.56.101
Server Port:               80
Document Path:          /issstart.html
Percentage of the requests served within a certain time (ms)
50%    881
66%    901
75%    906
80%    912
90%    940
95%   1039
98%   1081
99%   1092
100%   1124 (longest request)
Total of 1124 requests completed

Apache 2.2.3:

servidor@servidor-aplicacao:~$ ab -n 10000 -c 1000 http://192.168.56.102/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 192.168.56.102 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
apr_socket_recv: Connection reset by peer (104)
Total of 6133 requests completed

servidor@servidor-aplicacao:~$

Conclusão

O IIS 7 escala melhor, as requisições são respondidas mais rapidamente, tanto individualmente quanto no total.
O Apache, além de respostas mais lentas, não atendeu todas sendo que no último teste atender apenas 61% das requisições.
Em um próximo Post irei executar o tuning do Apache para que este problema seja um pouco minimizado.

quarta-feira, 14 de setembro de 2016

Identificando super usuários - SQL Server

Identificando logins com permissões elevadas no SQL Server.

É uma informação crítica e vital caso você administre servidores de banco de dados  conhecer quem possui permissões elevadas.
O que defino aqui como login com permissão elevada é aquele que:
• Está incluído na role de servidor sysadmin;
• Está incluído na role de servidor securityadmin
• Possui a permissão de CONTROL SERVER;
O post traz um script básico com o intuito de identificar quem são eles:
Script
O script se divide em duas partes: a primeira analisa roles de servidor com permissões importantes (nesse caso, sysadmin e securityadmin).  A segunda analisa permissões de servidor (CONTROL SERVER, leia os motivos aqui). Ambas as partes ignoram logins desativados.
Customização a gosto do administrador: filtrar certificados, outras roles que você pode considerar importante (dbcreator por exemplo), considerar também logins desabilitados…
Espero que você não tenha surpresas ao localizar algum login de modo inesperado e que o script ajude alguém. Mas se encontrar, espero que você resolva da melhor forma possível antes de ter algum problema chato por causa de falha na segurança.
[]’s


sexta-feira, 29 de julho de 2016

Funções - SQL SERVER

Neste tópico apresentaremos as funções internas mais comuns, utilizadas no dia-dia dos profissionais, desenvolvedores, analistas, offices users e curiosos que se aventuram em SQL ..

O SQL Server fornece muitas funções internas e também permite criar funções definidas pelo usuário. As categorias de funções internas são classificadas em quatro (04) categorias principais.
Função
Descrição
Retornam um objeto que pode ser usado como referências de tabela em uma instrução SQL.
Funcionam em uma coleção de valores mas retornam um valor único de resumo.
Retornam um valor de classificação para cada linha em uma partição.
Funcionam em um valor único e retornam um valor único. As funções escalares podem ser usadas onde uma expressão é válida.
* Cada grupo merece um tópico especifico para poder detalhar e expor exemplos de sua funcionalidade, acompanhe no blog ...


       As funções de conjunto de linhas retornam um objeto que pode ser usado no lugar de uma referência de tabela em uma instrução do Transact-SQL.Todas as funções de conjunto de linhas são não determinísticas. Isso significa que essas funções nem sempre retornam os mesmos resultados a cada chamada.


OPENDATASOURCE 

Fornece informações de conexão ad hoc como parte de um nome de objeto de quatro partes sem usar um nome de servidor vinculado.

Ex: 
SELECT FROM OPENDATASOURCE('SQLNCLI','Data Source=BR\SQL;Integrated Security=SSPI')
.AdventureWorks2012.HumanResources.Employee


OPENQUERY 

Executa a consulta passagem especificada no servidor vinculado especificado. Esse servidor é uma fonte de dados OLE DB. OPENQUERY pode ser referenciada na cláusula FROM de uma consulta como se fosse um nome de tabela. OPENQUERY também pode ser referenciada como a tabela de destino de uma instrução INSERT, UPDATE ou DELETE. Isso dependerá dos recursos do provedor OLE DB. Embora a consulta possa retornar vários conjuntos de resultados, OPENQUERY retorna somente o primeiro deles.

Ex: 

A.Executando uma consulta de passagem UPDATE

O exemplo a seguir usa uma consulta de passagem UPDATE no servidor vinculado criado no exemplo A.
UPDATE OPENQUERY (SQL8, 'SELECT name FROM joe.titles WHERE id = 101') 
SET name = 'ADifferentName'

B.Executando uma consulta de passagem INSERT

O exemplo a seguir usa uma consulta de passagem INSERT no servidor vinculado criado no exemplo A.
INSERT OPENQUERY (SQL8, 'SELECT name FROM joe.titles')
VALUES ('NewTitle')

C.Executando um consulta de passagem DELETE

O exemplo a seguir usa uma consulta de passagem DELETE para excluir a linha inserida no exemplo C.
DELETE OPENQUERY (SQL8, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''')

OPENXML

Fornece  uma exibição de conjunto de linhas em um documento XML.
Ex: EXEC sp_xml_preparedocument @idoc OUTPUT, @doc;


-- Execute a SELECT statement that uses the OPENXML rowset provider.
SELECT    *
FROM       OPENXML (@idoc, '/ROOT/Diretorio',1)
           WITH    (CustomerID  varchar(10),
                    ContactName varchar(20));

Continue a leitura em Funções De agregações ...