Como muitos já sabem o snapshot usa arquivos sparses, então o tamanho do arquivo que aparece no Windows não é o tamanho real, aquele é o tamanho do arquivo do banco de dados original. Então fiquei curioso para saber o tamanho real daquele database, depois de alguns dias pesquisando bastante sobre o assunto encontrei a DMV sys.dm_io_virtual_file_stats, pode-se passar como parâmetro para ela o ID do banco de dados.
Nesta DMV existe um campo size_on_disk_bytes que exibe em bytes o tamanho do arquivo no disco, fazendo alguns cáculos, chegamos no valor...
Executando a seguinte consulta no database snapshot:
select
database_id,
CAST((size_on_disk_bytes)/(1024.00*1024) AS NUMERIC(18,2)) AS Size_on_Disk_MB
from sys.dm_io_virtual_file_stats(DB_ID(), NULL)
Resultado:
Outra forma de vermos o tamanho real do banco snapshot é indo na propriedade do arquivo.
Abraços,
Rodrigo Figueiredo
figueiredo.rodrigo@hotmail.com
quinta-feira, 18 de novembro de 2010
quarta-feira, 10 de novembro de 2010
SQL Server Denali ou SQL 11
Galera,
Dos dias 8 a 11 de novembro está acontecendo o evento PASS Summit, este é simplesmente o maior e melhor evento de SQL Server do mundo!
Foi divulgado no PASS o novo SQL Server, o Microsoft® SQL Server® code-named 'Denali' - Community Technology Preview 1 (CTP1).
Segue link para baixar:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9
Segue algumas novas funcionalidades do SQL 11:
Agora poderemos trabalhar dentro do Analysis Services com uma interface gráfica idêntica ao Excel, utilizando o VS 2010, para que tenhamos o mesmo poder que o poweruser tem quando fazendo as análises dele, mas para ser usado durante o desenvolvimento, e utilizando os recursos de processamento do servidor. Na demonstração foi apresentado uma Demo trabalhando com 2 bilhões de linhas, que foram carregadas depois para o PowerPivot, e durante a ordenação em memória dos dados foi atingida uma velocidade de 1 TRILHÃO de linhas por minuto.
Column Data Store, resumindo bastante é uma nova forma de armazenar os dados, utilizando o algoritmo VertiPaq, utilizado pelo PowerPivot, mas não estamos falando de B.I., estou falando de utilizar o algoritmo para compressão dos dados utilizado no PowerPivot, dentro do banco RELACIONAL, na demonstração pegamos os mesmos 2 bilhões de linhas de antes, fazemos algumas agregações para retornar “apenas” 18 milhões de linhas.. tudo em alguns segundos!
Projeto Crescent. Nova ferramenta para relatórios, via web, sensacional, em alguns segundos o usuário final cria relatórios/dashboards com animações, gráficos e tudo que um relatório gerencial profissional merece.
Integração entre soluções de HA (alta disponibilidade) e DR (recuperação de desastres). Aqui teremos muitas novidades, onde poderemos criar grupos de disponibilidade, configurar até 5 níveis de severidade para iniciar um failover, redirecionamento automático dos clientes, ponto central para gerenciamento do HA e DR, utilização dos sistemas stand-by como servidores de relatórios, jogando a carga de leitura para esses servidores.
Vamos esperar mais novidades que com certeza aparecerão.
Books Online: http://msdn.microsoft.com/en-us/library/ms130214(SQL.110).aspx
Referência: http://blogs.solidq.com/fferreira/Home.aspx
Abraços,
Rodrigo Figueiredo
figueiredo.rodrigo@hotmail.com
Dos dias 8 a 11 de novembro está acontecendo o evento PASS Summit, este é simplesmente o maior e melhor evento de SQL Server do mundo!
Foi divulgado no PASS o novo SQL Server, o Microsoft® SQL Server® code-named 'Denali' - Community Technology Preview 1 (CTP1).
Segue link para baixar:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6a04f16f-f6be-4f92-9c92-f7e5677d91f9
Segue algumas novas funcionalidades do SQL 11:
Vamos esperar mais novidades que com certeza aparecerão.
Books Online: http://msdn.microsoft.com/en-us/library/ms130214(SQL.110).aspx
Referência: http://blogs.solidq.com/fferreira/Home.aspx
Abraços,
Rodrigo Figueiredo
figueiredo.rodrigo@hotmail.com
quinta-feira, 4 de novembro de 2010
Criptografia Transparente de Dados - Final
Irei mostrar todos os testes que fiz ao desabilitar a TDE de um banco de dados.
Estou utilizando o SQL Server 2008 Developer Edition com SP2, build 10.0.4000.
Vamos lá...
-- Desabilitando a criptografia do banco de dados
ALTER DATABASE Criptografia
SET ENCRYPTION OFF
GO
Após executar este comando e desabilitar a TDE vamos executar a consulta:
SELECT DB_NAME(e.database_id) AS DatabaseName,
e.encryption_state,
CASE e.encryption_state
WHEN 0 THEN 'No database encryption key present, no encryption'
WHEN 1 THEN 'Unencrypted'
WHEN 2 THEN 'Encryption in progress'
WHEN 3 THEN 'Encrypted'
WHEN 4 THEN 'Key change in progress'
WHEN 5 THEN 'Decryption in progress'
END AS encryption_state_desc,
key_algorithm +'_'+ convert(nvarchar,key_length) [Algoritmo],
c.name [Nome Certificado],
set_date [Data Criptografia]
FROM sys.dm_database_encryption_keys AS e
LEFT JOIN master.sys.certificates AS c
ON e.encryptor_thumbprint = c.thumbprint
Teremos o seguinte o resultado:
Vemos que a criptografia está desabilitada mas o banco de dados ainda está associado ao certificado, vamos então excluir então a chave de criptografia do banco:
USE Criptografia
GO
DROP DATABASE ENCRYPTION KEY
GO
Executando a consulta novamente veremos que somente o banco tempdb sairá no resultado:
Neste momento se reiniciarmos o serviço do SQL e executarmos a consulta não retornará nada.
Vamos agora desatachar o banco e tentar restaurar em outra instância usando o mesmo SQL Server 2008 Developer Edition com SP2, build 10.0.4000 só que sem nenhuma chave de criptografia ou certificado, teoricamente era para funcionar já que desabilitamos a TDE do banco, mas vamos ver o resultado.
--Desatachando o banco
USE master
GO
sp_detach_db 'Criptografia'
GO
e agora vamos tentar atachar na outra instância:
EXEC sp_attach_db @dbname = 'Criptografia',
@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia.mdf',
@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia_Log.ldf'
GO
Teremos o seguinte retorno:
Msg 33111, Level 16, State 3, Line 1
Cannot find server certificate with thumbprint '0xAA16E63CE30B041330332FA87A4C37E82F8ABC33'.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'Criptografia'. CREATE DATABASE is aborted.
Neste momento eu não acreditei que não seria possível tirar a criptografia do banco, então fiz um backup da banco e tentei restaurar, tive o seguinte retorno:
Processed 256 pages for database 'Criptografia', file 'Criptografia' on file 1.
Processed 1 pages for database 'Criptografia', file 'Criptografia_log' on file 1.
Msg 33111, Level 16, State 3, Line 1
Cannot find server certificate with thumbprint '0xAA16E63CE30B041330332FA87A4C37E82F8ABC33'.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Após alguns dias pesquisando vi que no CU10 do SQL Server 2008 SP1 esse bug (Microsoft assumiu) foi corrigido. Decidi então fazer o teste.
Instalei o SQL Server 2008 SP1 com CU10, build 2799
Fiz os mesmos testes utilizando o SQL Server 2008 SP1 com CU10, build 2799 e realmente conseguir atachar e/ou restaurar o banco após desabilitar a criptografia TDE. Segundo a Microsoft o erro ocorria porque o arquivo .ldf do banco ficava com referências do certificado.
Agora como sabemos o SQL Server 2008 SP2 só inclui o CU1 até CU8, então aconselho que quando for usar TDE utilize o SQL Server 2008 SP1 com CU10 ou então espere mais um tempo até sair o SP3 (se sair, hehehe), agora a outra é opção é NUNCA perder o certificado, assim você pode levar o banco para qualquer servidor utilizando o certificado.
Abraços,
Rodrigo Figueiredo
figueiredo.rodrigo@hotmail.com
Estou utilizando o SQL Server 2008 Developer Edition com SP2, build 10.0.4000.
Vamos lá...
-- Desabilitando a criptografia do banco de dados
ALTER DATABASE Criptografia
SET ENCRYPTION OFF
GO
Após executar este comando e desabilitar a TDE vamos executar a consulta:
SELECT DB_NAME(e.database_id) AS DatabaseName,
e.encryption_state,
CASE e.encryption_state
WHEN 0 THEN 'No database encryption key present, no encryption'
WHEN 1 THEN 'Unencrypted'
WHEN 2 THEN 'Encryption in progress'
WHEN 3 THEN 'Encrypted'
WHEN 4 THEN 'Key change in progress'
WHEN 5 THEN 'Decryption in progress'
END AS encryption_state_desc,
key_algorithm +'_'+ convert(nvarchar,key_length) [Algoritmo],
c.name [Nome Certificado],
set_date [Data Criptografia]
FROM sys.dm_database_encryption_keys AS e
LEFT JOIN master.sys.certificates AS c
ON e.encryptor_thumbprint = c.thumbprint
Teremos o seguinte o resultado:
Vemos que a criptografia está desabilitada mas o banco de dados ainda está associado ao certificado, vamos então excluir então a chave de criptografia do banco:
USE Criptografia
GO
DROP DATABASE ENCRYPTION KEY
GO
Executando a consulta novamente veremos que somente o banco tempdb sairá no resultado:
Neste momento se reiniciarmos o serviço do SQL e executarmos a consulta não retornará nada.
Vamos agora desatachar o banco e tentar restaurar em outra instância usando o mesmo SQL Server 2008 Developer Edition com SP2, build 10.0.4000 só que sem nenhuma chave de criptografia ou certificado, teoricamente era para funcionar já que desabilitamos a TDE do banco, mas vamos ver o resultado.
--Desatachando o banco
USE master
GO
sp_detach_db 'Criptografia'
GO
e agora vamos tentar atachar na outra instância:
EXEC sp_attach_db @dbname = 'Criptografia',
@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia.mdf',
@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\Criptografia_Log.ldf'
GO
Teremos o seguinte retorno:
Msg 33111, Level 16, State 3, Line 1
Cannot find server certificate with thumbprint '0xAA16E63CE30B041330332FA87A4C37E82F8ABC33'.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'Criptografia'. CREATE DATABASE is aborted.
Neste momento eu não acreditei que não seria possível tirar a criptografia do banco, então fiz um backup da banco e tentei restaurar, tive o seguinte retorno:
Processed 256 pages for database 'Criptografia', file 'Criptografia' on file 1.
Processed 1 pages for database 'Criptografia', file 'Criptografia_log' on file 1.
Msg 33111, Level 16, State 3, Line 1
Cannot find server certificate with thumbprint '0xAA16E63CE30B041330332FA87A4C37E82F8ABC33'.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Após alguns dias pesquisando vi que no CU10 do SQL Server 2008 SP1 esse bug (Microsoft assumiu) foi corrigido. Decidi então fazer o teste.
Instalei o SQL Server 2008 SP1 com CU10, build 2799
Fiz os mesmos testes utilizando o SQL Server 2008 SP1 com CU10, build 2799 e realmente conseguir atachar e/ou restaurar o banco após desabilitar a criptografia TDE. Segundo a Microsoft o erro ocorria porque o arquivo .ldf do banco ficava com referências do certificado.
Agora como sabemos o SQL Server 2008 SP2 só inclui o CU1 até CU8, então aconselho que quando for usar TDE utilize o SQL Server 2008 SP1 com CU10 ou então espere mais um tempo até sair o SP3 (se sair, hehehe), agora a outra é opção é NUNCA perder o certificado, assim você pode levar o banco para qualquer servidor utilizando o certificado.
Abraços,
Rodrigo Figueiredo
figueiredo.rodrigo@hotmail.com
Assinar:
Postagens (Atom)