sábado, 20 de abril de 2013

Criação de arquivo utilizando Select–Oracle

 

Segue dica para geração de arquivo a partir de uma consulta de forma rápida utilizando SqlPlus:

 

{
echo "set pagesize 0"
echo " Select ColunaExemplo1||','||ColunaExemplo2||','||ColunaExemplo3 ||','||ColunaExemplo4 ||','||ColunaExemplo5||','||
ColunaExemplo6||','||ColunaExemplo7||','||ColunaExemplo8 FROM Tabela_TESTE;"
} | sqlplus -s usário/Senha@Servidor >> Resultado.log

Como saída, será gerado o arquivo resultado.log com o resultado do Select, podendo esse arquivo futuramente ser importado como um CSV.

O script foi utilizado para geração de uma arquivo para uma grande massa de dados e a resposta\performance foi satisfatória.

 

Obrigado

Consultar índices particionados de uma Tabela–SqlServer

 

Segue para identificar e consultar os índices particionados de uma determinada tabela:

select distinct
   p.[object_id],
   TbName = OBJECT_NAME(p.[object_id]),
   index_name = i.[name],
   index_type_desc = i.type_desc,
   partition_scheme = ps.[name],
   data_space_id = ps.data_space_id,
   function_name = pf.[name],
   function_id = ps.function_id
from sys.partitions p
inner join sys.indexes i
   on p.[object_id] = i.[object_id]
   and p.index_id = i.index_id
inner join sys.data_spaces ds
   on i.data_space_id = ds.data_space_id
inner join sys.partition_schemes ps
on ds.data_space_id = ps.data_space_id
inner JOIN sys.partition_functions pf
   on ps.function_id = pf.function_id
WHERE p.[object_id] = object_id('Nome_tabela')
order by    TbName, index_name ;

Obs.: Substituir pelo nome da tabela desejado

Obrigado

quarta-feira, 3 de abril de 2013

Quais são as consultas mais executadas? - Oracle

 

Segue consulta para identificar quais as 20 consultas mais executadas no seu banco de dados.

SELECT sql_text, executions
  FROM (SELECT sql_text, executions,
        RANK() OVER (ORDER BY executions DESC) exec_rank
        FROM v$sql)
WHERE exec_rank <= 20;

Obrigado

sábado, 30 de março de 2013

Quando foi atualizado as estatísticas da tabela–SQL Server

 

Segue consulta para identificar quando foi atualizada a estatística de uma determinada tabela:

No exemplo a seguir foi utilizada a tabela 'HumanResources.Department'

SELECT name AS index_name,
STATS_DATE(OBJECT_ID, index_id) AS StatsUpdated
FROM sys.indexes
WHERE OBJECT_ID = OBJECT_ID('HumanResources.Department')
GO

index_name StatsUpdated
PK_Department_DepartmentID 2012-03-29 13:52:19.380
AK_Department_Name 2012-03-29 13:52:22.550

Obrigado

Criar LDF a partir do MDF–SQL Server

 

Baixei o AdventureWorksLT2008.MDF da Microsoft, mas ao tentar importar o banco de dados o SQL Server informa que não foi possível encontrar o arquivo de LOG (.ldf).

Segue o comando para criar o ldf a partir de uma arquivo mdf:

EXEC sp_attach_single_file_db
    @dbname = 'AdventureWorksLT2008',
    @physname = 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\AdventureWorksLT2008_Data.mdf'

Onde:

@dbname – Nome do Banco de Dados

@physname – Diretório onde esta armazenado o arquivo mdf.

Obrigado

SQL Server Data Compression–Introdução

 

Há uma coisa que todos os DBA sabe com certeza, e isso é que seus bancos de dados irão crescer com o tempo. Quanto mais dados tivermos, mais trabalho o SQL Server tende realizar.

Ok, mas em que o Data Compression me ajuda?

A compressão de dados em SQL Server oferece dois benefícios potenciais ao DBA:

  • Reduzir o tamanho dos arquivos físicos (MDF/NDF), reduzindo a quantidade de armazenamento em disco.
  • Reduzir a quantidade de I/O necessário para uma carga de dados, ajudando a impulsionar
    desempenho.

Tipos de compressão de dados

A partir do SQL Server 2008 foi oferecido duas formas de compressão de dados:

ROW - Nível de compressão de dados por linha. Esta característica de compressão leva em consideração os tipos de dados que definem a coluna da tabela, por exemplo, uma coluna char(50) e o valor armazenado na coluna em sua maioria é 15 caracteres, neste caso a compressão por linha vai ocupar em disco somente o espaço exigido para os 15 caracteres, ou seja, com esse tipo de compressão não será alocado espaço em disco para valores zero ou nulos fazendo com que mais linhas sejam alocadas em uma mesma página. Alguns outros tipos de dados podem ser comprimidos, mas não é aplicado para todos.

PAGE – Nível de compressão de dados por página. Além de armazenar dados de forma eficiente dentro de uma linha, a compressão otimiza a página de armazenamento de várias linhas em uma página, minimizando a redundância de dados. A compressão de página usa compactação de prefixo(procura padrões comuns no início de cada coluna, exemplo, todas que comecem com XPTO%)  e compressão de dicionário (procura por correspondências exatas em todas as colunas e linhas de cada pagina) que são substituídas por uma referencia abreviada de menor caracteres ocupando menos espaço.

Quando uma tabela ou índice não possui configuração para compressão de dados o seu tipo estará definido como NONE.

Obrigado

terça-feira, 5 de março de 2013

Verifica existencia do arquivo–Visual Basic 2008–SSIS

 

Código utiliza no SSIS para verificação da existencia de uma arquivo antes de realizar a Leitura

' Microsoft SQL Server Integration Services Script Task

' Write scripts using Microsoft Visual Basic 2008.

' The ScriptMain is the entry point class of the script.

Imports System

Imports System.Data

Imports System.Math

Imports Microsoft.SqlServer.Dts.Runtime

<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _

<System.CLSCompliantAttribute(False)> _

Partial Public Class ScriptMain

Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

Enum ScriptResults

Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success

Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure

End Enum

Public Sub Main()

If System.IO.File.Exists(Dts.Variables("sCaminhoArquivo").Value & Dts.Variables("sNomeArquivo").Value) Then

Dts.Variables("sExisteArquivo").Value = 1

Else

Dts.Variables("sExisteArquivo").Value = 0

End If

Dts.TaskResult = ScriptResults.Success

End Sub

End Class

No exemplo acima, acaso o arquivo exista será alimentado a variável sExisteArquivo, onde pode ser utilizada em um precedence Constraint Editor realizando a validação antes de fazer a leitura do Data Flow.

 

Obrigado