segunda-feira, 27 de agosto de 2012

Novidade .NET Framework 4.5

Olá Pessoal Boa noite, hoje vamos ver o que há de novo do .NET Framework.

Biblioteca de Classes Portateis
O projeto Biblioteca de Classes Portátil em Visual Studio 2012 permite que você criar assemblies gerenciados que funcionem em várias plataformas do .NET Framework. Ao usar um projeto Biblioteca de Classes Portátil, você escolhe as plataformas (como o Windows Phone e o .NET for Windows Store apps).  Os tipos e membros disponíveis em seu projeto são restritos automaticamente aos tipos e membros comuns através dessas plataformas.
 
Para mais informações, consulte Biblioteca de classe portátil.

Novos Recurso e Aprimoramentos Principais
Os recursos e aprimoramentos a seguir foram adicionados ao tempo de execução de idioma comum e às classes do .NET Framework:
  • Capacidade de reduzir as reinicializações do sistema detectando e fechando os aplicativos do .NET Framework 4 durante a implantação. Consulte Reduzir o sistema for reiniciado durante.NET Framework 4.5 RC instalações.
  • Suporte para matrizes maiores do que 2 gigabytes (GB) em plataformas de 64 bits. Esse recurso pode ser ativado no arquivo de configuração do aplicativo. Consulte o elemento <gcAllowVeryLargeObjects>, que também lista outras restrições ao tamanho de objetos e de matrizes.
  • Melhora o desempenho através de coleta de lixo em segundo plano para servidores. Ao usar a coleta de lixo do servidor no .NET Framework 4.5, a coleta de lixo em segundo plano é automaticamente ativada.
  • Compilação em segundo plano just-in-time (JIT), que está disponível opcionalmente em vários processadores multi-core para melhorar o desempenho do aplicativo. Consulte ProfileOptimization.
  • Capacidade de limitar quanto tempo o mecanismo de expressões regulares irá tentar resolver uma expressão regular antes de expirar. Consulte a Regex.MatchTimeout .
  • Capacidade de definir a cultura padrão para um domínio de aplicativo. Consulte a classe CultureInfo .
  • Suporte de console para a codificação Unicode (UTF-16). Consulte a classe Console.
  • Suporte para controle de versão de solicitações de cadeia de caracteres culturais e dados de comparação. Consulte a classe SortVersion.
  • Melhora o desempenho ao recuperar recursos. Consulte Empacotamento e implantação de recursos em aplicativos de Desktop.
  • Faça melhorias na compactação para reduzir o tamanho de um arquivo compactado. Consulte o namespace System.IO.Compression.
  • Capacidade para personalizar um contexto de reflexão para substituir o comportamento de reflexão padrão através da classe CustomReflectionContext.
  • Suporte para a versão 2008 do padrão de Nomes de Domínios Internacionalizados em Aplicativos (IDNA) quando a classe System.Globalization.IdnMapping é usada no Windows 8.
  • A delegação de comparação de cadeia de caracteres para o sistema operacional, que implementa o Unicode 6.0, quando o.NET Framework é usado no Windows 8. Ao executar em outras plataformas, o.NET Framework inclui seus próprios dados de comparação de cadeia de caracteres, que implementam o Unicode 5.x. Consulte a String e a seção Comentários da classe SortVersion.
  • Capacidade de calcular os códigos de hash para cadeias de caracteres em uma base do domínio de aplicativo. Consulte Elemento <UseRandomizedStringHashAlgorithm>.

Estrutura de Extensibilidade Gerenciada (MEF)

O Managed Extensibility Framework (MEF) fornece os seguintes recursos novos:
  • Suporte para tipos genéricos.
  • O modelo de programação baseado em convenção permite que você crie partes com base nas convenções de nomenclatura em vez de atributos.
  • Vários escopos.
  • Um subconjunto de MEF que você usa ao criar aplicativos do Metro style. Esse subconjunto está disponível como um pacote disponíveis para download na NuGet Gallery. Para instalar o pacote, abra o projeto no Visual Studio 2012, escolha Gerenciar Pacotes NuGet no menu Project , e procure online pelo pacote Microsoft.Composition .
Para mais informações, consulte Visão geral sobre estrutura de extensibilidade gerenciada.

Operação Assincronas de Arquivo
Em .NET Framework 4.5, os novos recursos assíncronos foram adicionados para as linguagens C# e Visual Basic. Esses recursos adicionam um modelo com base na tarefa para executar operações assincrônicas. Para usar este novo modelo, use os métodos assíncronos nas classes I/O. Consulte E/S de arquivo assíncrono.
 
fonte: http://msdn.microsoft.com/pt-br/library/ms171868
 

terça-feira, 7 de agosto de 2012

Listando índices da tabela com sp_helpindex (Transact-SQL)

Olá,

Mais uma dica sobre SQL SERVER.

Para listar informações sobre os índices em uma tabela podemos usar o comando abaixo:

EXEC sp_helpindex 'Cidade'


Se os índices tiverem sido definidos com o uso da opção NORECOMPUTE de UPDATE STATISTICS, essas informações serão incluídas na coluna index_description.
sp_helpindex expõe apenas as colunas de índices que podem ser solicitadas; por isso, não expõe informações sobre índices XML ou índices espaciais.

http://msdn.microsoft.com/pt-br/library/ms188771(SQL.105).aspx

DICA: Saber se sua base tem o maior consumo de índice com consultas ou escritas?

Olá,

Segue mais uma dica de SQL Server.

Para saber qual é a caracteristica predominante em sua base de dados em relação a utilização dos indices, executem o script abaixo:

SELECT

CAST(SUM(user_seeks + user_scans + user_lookups) AS decimal) / CAST(SUM(user_updates) + SUM(user_seeks + user_scans + user_lookups) AS decimal) * 100 AS ReadPercent ,
CAST(SUM(user_updates) AS decimal) / CAST(SUM(user_updates) + SUM(user_seeks + user_scans + user_lookups) AS decimal) * 100 AS WriteRatio
FROM

sys.dm_db_index_usage_stats

Ele irá apresentar o percentual de utilização do mesmo.

Com essa dica você terá a noção se poderá criar índices sem ter muita preocupação com perca de desempenho em operações do tipo (Insert, Update e Delete).

Até a próxima.

Tipos de índices SQL SERVER

Olá,

Nesse breve artigo sobre vamos abordar os tipos de índices existentes no SQL Server.

Clusterizado

O índice clusterizado classifica e armazena as linhas de dados da tabela ou exibição em uma ordem com base na chave do índice clusterizado. O índice clusterizado é implementado como uma estrutura de índice da árvore B que oferece suporte à recuperação rápida de linhas com base em seus valores da chave de índice clusterizado.


Não clusterizado

Um índice não clusterizado pode ser definido em uma tabela ou exibição com um índice clusterizado ou em um heap. Cada linha do índice não clusterizado contém o valor da chave não clusterizada e um localizador de linha. Esse localizador aponta para a linha de dados no índice clusterizado ou heap que possui o valor da chave. As linhas do índice são armazenadas na ordem dos valores da chave de índice, mas não há garantias de que as linhas de dados estejam em uma determinada ordem, a menos que um índice clusterizado seja criado na tabela.


Exclusivo

Um índice exclusivo garante que a chave de índice não contenha valores duplicados; portanto, cada linha em uma tabela ou exibição é, de alguma forma, única.
Tanto os índices clusterizados quanto os não clusterizados podem ser exclusivos.

Índice com colunas incluídas


Um índice não clusterizado que é estendido para incluir colunas que não são de chave, além das colunas de chave.


Texto completo




Um tipo especial de índice funcional com base em token que é criado e mantido pelo Mecanismo de Texto Completo da Microsoft para o SQL Server. Ele fornece suporte eficiente para pesquisas sofisticadas de palavras em dados de cadeias de caracteres.

Espacial

Um índice espacial fornece a habilidade de realizar determinadas operações de forma mais eficiente em objetos espaciais (dados espaciais) em uma coluna do tipo de dados geometria. O índice espacial reduz o número de objetos nos quais operações espaciais relativamente dispendiosas precisam ser aplicadas.

Filtrado

Um índice não clusterizado aperfeiçoado, especialmente indicado para abranger consultas que selecionam de um subconjunto bem definido de dados. Ele usa um predicado de filtro para indexar uma parte das linhas da tabela. Um índice filtrado bem projetado pode melhorar o desempenho das consultas e reduzir os custos de manutenção e armazenamento do índice em comparação com os índices de tabela completa.

XML

Uma representação fragmentada e persistente de BLOBS (objetos grandes binários) XML na coluna de tipo de dados xml.

http://msdn.microsoft.com/pt-br/library/ms175049(v=sql.105)

segunda-feira, 6 de agosto de 2012

Monitorar CPU SQL SERVER

Olá,

Segue aqui uma dica muito interessante, onde pode ajudar muitos administradores do SQL Server que não tem acesso a máquina, monitorar o consumo de CPU tanto do Servidor quanto ao do SQL Server.

Para conseguir acessar esse recurso vamos utilizar asDMV

 sys.dm_os_sys_info (Transact-SQL)



Essa DMV retorna informações sobre o computador no qual o SQL Server foi instalado, inclusive os recursos disponíveis e consumidos pelo SQL Server.

WITH MonitorCPUSQLSERVER AS

(

SELECT DATEADD(ms,(select [ms_ticks]-[timestamp] from sys.dm_os_sys_info),

GETDATE()) AS 'EventDateTime',

CAST(record AS xml) AS 'record'

FROM sys.dm_os_ring_buffers

WHERE ring_buffer_type = 'RING_BUFFER_SCHEDULER_MONITOR'

AND [timestamp] > (select [ms_ticks] - 30*60000 -- Visualizar os ultimos 30 min.

from sys.dm_os_sys_info)

)

SELECT

CONVERT (varchar, EventDateTime, 126) AS EventTime,

SysHealth.value('ProcessUtilization[1]','int') AS 'CPU (SQL Server)',

100 - SysHealth.value('SystemIdle[1]','int') AS 'CPU (Todos os Processos)'

FROM MonitorCPUSQLSERVER CROSS APPLY record.nodes('/Record/SchedulerMonitorEvent/SystemHealth') T(SysHealth)

ORDER BY EventDateTime DESC

É isso espero que essa dica seja util!

quarta-feira, 4 de julho de 2012

Stored Procedure - Parâmetros de Entrada e Saída


STORED PROCEDURE
Stored Procedure é um grupo de instruções Transact-SQL compiladas em um único plano de execução. As 

Stored Procedures podem ajudá-los a conseguir uma implementação consistente da lógica nos aplicativos.

Stored Procedures são semelhantes às linguagens de programação, pois podem conter:
  • Parâmetros de entrada e retornar vários valores na forma de parâmetros de saída para o procedimento ou lote de chamada
  • Instruções de programação que executem operações no banco de dados, incluindo chamadas para outros procedimentos.
  • Retornar um valor de status para um procedimento ou lote de chamada a fim de indicar êxito ou falha (e a razão da falha).

Para executar um Stored Procedure você pode utilizar o comando EXECUTE, veremos a seguir sua utilização na pratica.

Podemos criar a Stored Procedure utilizado o comando CREATE PROCEDURE do Transact-SQL.

Para nomear a Stored Procedure não é recomendável utilizar sp_ como prefixo, pois o SQL Server usa esse prefixo para Stored Procedure do banco de dados.

Para criar nosso exemplo utilizarei a versão Express do SQL Server 2008, no qual pode ser baixada 
gratuitamente no site da Microsoft.

Nesse exemplo irei utilizar a base de dados AdventureWorks, também pode efetuar o download no site da Microsoft.

Nesse exemplo vamos criar uma Stored Procedure onde informamos o código do departamento como parâmetro de entrada a o procedimento retornará o result set.


No exemplo a seguir vamos criar uma Stored Procedure onde vamos receber um valor de retorno, nesse caso será necessário informar o OUTPUT.




Abaixo segue a relação de parâmetros utilizados na Stored Procedure.

Parâmetros de entrada
Os parâmetros de entrada permitem que o comando passe um valor de dados para Stored Procedure

Parâmetros de saída
Os parâmetros de saída permitem que o Stored Procedure passe um valor de dados ou uma variável de cursor de volta para o comando. As funções definidas pelo usuário não podem especificar parâmetros de saída.

Valores de retorno
Toda Stored Procedure retorna um código de retorno de inteiro ao comando. Se o procedimento armazenado não definir um valor explicitamente para o código de retorno, este será 0.
Existem diversos comandos que não foram abordados nesse artigo, porem o processo pode ajudar muita mais do que os exemplos acima.


quinta-feira, 24 de maio de 2012

C# para Android

Já pensou em desenvolver em C# para Android?
A Oracle e o Google estão em uma briga de US$ 1 bilhão por causa do uso do Java pelo Google no Android. Mas Java não é a única e nem mesmo a melhor forma de criar aplicativos nativos na plataforma.
A Xamarin, especializada em plataformas cruzadas para dispositivos móveis, oferece a plataforma Mono, uma implementação open source do framework .NET que permite escrever códigos utilizando C# para rodar em sistemas operacionais baseados em Java, e então compartilhar com iOS e Windows Phone.
Ao contrário da Sun com o Java, a Microsoft submeteu o C# e o .NET VM para padronização do ECMA e viu esses padrões serem aprovados de ponta a ponta, até o compromisso com patentes do ISO. O framework .NET também está coberto pela promessa legal da Microsoft junto à comunidade.