Docstoc

Novidades SQL Server 2008

Document Sample
Novidades SQL Server 2008 Powered By Docstoc
					SQL Server 2008

Novidades
Randy Dyess

VISÃO GERAL:

       Gerenciamento mais poderoso
       Desempenho e escalabilidade aprimorados
       Mais segurança e disponibilidade
       Alterações para desenvolvedores



Novamente, a Microsoft lançou uma nova versão do
SQL Server que promete melhorar a vida dos
administradores de banco de dados. A versão mais
recente é o SQL Server 2008, e oferece uma grande
variedade de novos
recursos e funcionalidades que transformarão a administração em uma tarefa muito melhor.
Os administradores de banco de dados que têm usado o SQL Server® 2005 por qualquer
período de tempo encontrarão muitos dos recursos utilizados em seus trabalhos diários, mas
logo descobrirão também que essas ferramentas familiares foram aperfeiçoadas no SQL
Server 2008. A nova funcionalidade criada com base nos recursos existentes percorre um
longo caminho para a redução do número de soluções alternativas ou personalizações uma
vez necessárias para a utilização de vários recursos em ambientes de banco de dados
complexos.
Os novos recursos do SQL Server 2008 envolvem um amplo intervalo de cargos de trabalho
de banco de dados, dificultando sua categorização. Como eu classifico recursos em diferentes
tópicos, percebi que alguns leitores poderão querer saber por que coloquei o Recurso X na
Categoria Y quando ele claramente pertence à Categoria Z. É uma questão de perspectiva,
afetada pela forma como a sua empresa trabalha.
Eu compreendo que quem trabalha com bancos de dados quase sempre se vê em diferentes
cargos de trabalho, mas tentarei dividir os novos recursos para que eles se encaixem nas
seguintes categorias genéricas: gerenciamento, escalabilidade, desempenho, alta
disponibilidade, segurança, desenvolvimento e business intelligence.

O que há de novo em gerenciamento?
Para os administradores de banco de dados (como eu), a funcionalidade de gerenciamento
adicional torna o SQL Server 2008 um novo produto bem interessante. O novo
gerenciamento de diretivas, os diversos recursos de consulta de servidor, os servidores de
configuração e o data collector/management warehouse oferecem capacidades novas e
poderosas para administradores de banco de dados que quase sempre são responsáveis pelo
gerenciamento de ambientes de banco de dados grandes e complexos, com centenas ou
milhares de bancos de dados em dezenas ou até em centenas de servidores.
O recurso Gerenciamento de Diretivas do SQL Server 2008, que, na verdade, foi chamado de
Declarative Management Framework nas CTPs (Community Technology Previews), permite a
você criar e executar diretivas de configuração em um ou mais servidores de banco de
dados. Com essas diretivas, você pode garantir que configurações padrão sejam aplicadas e
mantidas em cada um dos servidores e bancos de dados de destino. Você pode ver um
exemplo desse recurso na Figura 1.
Figure 1 A diretiva de melhores práticas de local de dados e de arquivos de log (Clique
na imagem para aumentar a exibição)
As diretivas são criadas a partir de conjuntos predefinidos de facetas. Cada faceta contém
um subgrupo de configurações do SQL Server 2008 e de outros eventos que você pode
controlar. Emparelhe essas facetas com condições para criar uma diretiva. As condições são
os valores permitidos para as propriedades de uma faceta, das configurações ou de outros
eventos contidos nelas.
As condições também são valores usados para filtros de diretivas. Digamos que você queira
que a diretiva seja executada somente em certo banco de dados. Nesse caso, é possível criar
uma condição que contenha o nome do banco de dados e adicioná-la à diretiva. Dessa
forma, a diretiva só se aplicará a esse único banco de dados. Confie em mim — o
Gerenciamento de Diretivas do SQL Server 2008 pode soar complexo, mas depois de
experimentá-lo, você perceberá que ele é bem intuitivo.
Os novos recursos Multiple Server Interaction e Configuration Servers são úteis quando você
precisa executar consultas em diversos servidores ao mesmo tempo. Você pode registrar
servidores em seu Management Studio e depois agrupá-los. Quando for necessário executar
uma diretiva ou consulta em todos os servidores do agrupamento, bastará clicar com o botão
direito do mouse no agrupamento.
Como um benefício adicional, você pode configurar esse recurso para que ele retorne um
conjunto de resultados por servidor ou mescle todos eles em um conjunto de resultados
maior. Também é possível especificar se você deseja que os nomes do servidor e do banco
de dados façam parte dos resultados para poder separar os resultados individuais de cada
servidor. Ser capaz de armazenar os servidores registrados no servidor de configuração em
vez de cada Management Studio individual é uma grande vantagem.
Outro bom recurso de gerenciamento é o Data Collector. Com freqüência, os administradores
de banco de dados precisam coletar dados de gerenciamento de um grande número de
servidores, e muitos desses DBAs criaram sua própria solução personalizada para isso. O
Data Collector é um mecanismo interno que facilita a tarefa de coleta de dados relacionados
ao gerenciamento. Ele permite que você utilize o SQL Server Agent e o SSIS (SQL Server
Integration Services) para criar uma estrutura que coleta e armazena seus dados, além de
oferecer manipulação de erros, auditoria e histórico de coleta.
Ao contrário de ferramentas de terceiros e de trabalhos personalizados, o Data Collector será
facilmente compreendido pela maioria dos administradores de banco de dados, uma vez que
utiliza o SQL Server Agent e o SSIS para criar um conjunto de trabalhos e de pacotes para
manipular as conexões, a coleta e o armazenamento de dados (como você pode ver na
Figura 2). Quando esses dados forem armazenados em um local central, conhecido como o
Management Warehouse, poderão ser exibidos e organizados por meio de um conjunto de
instruções T-SQL e de relatórios do SQL Server 2008 Reporting Services. Esse
armazenamento central de dados facilita muito a análise e a exibição das métricas gerais de
gerenciamento do ambiente de banco de dados.
Figure 2 O arquivo de log de uso de disco do Data Collector (Clique na imagem para
aumentar a exibição)

O que há de novo em escalabilidade?
Ao longo dos anos, administradores de banco de dados SQL Server viram seus ambientes de
banco de dados se tornarem cada vez maiores. À medida que o tamanho do seu ambiente de
banco de dados aumenta, você precisa de novos métodos e ferramentas para obter a
escalabilidade exigida pela maioria das empresas. O SQL Server 2008 apresenta diversos
recursos novos que serão muito úteis.
O SQL Server 2008 possui compactação interna para os arquivos do banco de dados e para
os arquivos do log de transações associados ao banco de dados correspondente. O SQL
Server 2005 apresentou o recurso de compactar dados em um arquivo ou grupo de arquivos
somente leitura, mas ele simplesmente utilizava o recurso de compactação do NTFS do
Windows®. Com o SQL Server 2008, agora você pode obter a compactação em nível de linha
e em nível de página, oferecendo benefícios que não podem ser obtidos com a compactação
no nível do arquivo de dados.
A compactação nos níveis de linha e de página reduz o tamanho do espaço de dados
necessário, além de reduzir a quantidade de memória necessária, já que os dados
permanecem compactados na memória. Os dados compactados na memória resulta em
maior utilização da memória, beneficiando a escalabilidade de vários sistemas.
O SQL Server 2008 também apresenta a compactação em nível de backup. Embora os
backups de banco de dados só incluam a parte ativa do banco de dados, isso ainda
representa centenas de gigabytes ou até mesmo dezenas de terabytes. Em ambientes de
banco de dados que possuem mais de uma cópia de um arquivo de backup com vários
terabytes, esses backups quase sempre ocupam um valioso espaço de armazenamento que
poderia ser usado de forma mais eficiente. Ao permitir que administradores de banco de
dados compactem seus arquivos de backup, o SQL Server 2008 libera um pouco desse
espaço para que ele possa ser usado para dados dinâmicos.
E há também o Resource Governor. Esse novo recurso permite que você defina os valores de
recursos que cargas de trabalho ou agrupamentos de cargas de trabalho poderão usar
durante a execução. Com o Resource Governor, você pode criar um ambiente no qual
diversas cargas de trabalho diferentes coexistirão em um servidor sem temer que uma ou
mais delas sobrecarregue o servidor e reduza o desempenho das outras cargas de trabalho.
A vantagem desse recurso é que você pode usar com mais eficiência a quantidade total de
recursos disponíveis em seus servidores de banco de dados. A Figura 3 mostra um exemplo
da utilização do Resource Governor para limitar a atividade em um servidor.
 Figure 3 Limit activity with the Resource Governor

Copiar Código
USE master
go

--Drop function
IF OBJECT_ID('rgclassifier_demo','Function') IS NOT NULL
DROP FUNCTION rgclassifier_demo
go
--Create a classifier function for report group
CREATE FUNCTION rgclassifier_demo() RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
     DECLARE @group_name AS SYSNAME
   IF (USER_NAME() LIKE '%Launch_Demo%')
          SET @group_name = 'demogroup'
     RETURN @group_name
END
GO

--Drop workload group for anything coming from Management Studio
IF EXISTS (SELECT name FROM sys.resource_governor_workload_groups
   WHERE name = 'demogroup')
BEGIN
   DROP WORKLOAD GROUP demogroup
END
GO

--Create workload group
CREATE WORKLOAD GROUP demogroup
GO

--Register the classifier function with
--Resource Governor
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=
dbo.rgclassifier_demo)
GO

--Alter the dbogroup workload group to only
--allow 10% of CPU for each workload request
ALTER WORKLOAD GROUP demogroup
WITH (REQUEST_MAX_CPU_TIME_SEC = 10)
GO

--Create a new resource pool and set a maximum CPU limit for all
workloads.
IF EXISTS (SELECT name FROM sys.resource_governor_resource_pools
   WHERE name = 'pooldemo')
DROP RESOURCE POOL pooldemo
GO

CREATE RESOURCE POOL pooldemo
WITH (MAX_CPU_PERCENT = 40)
GO

--Configure the workload group so it uses the
--new resource pool.
ALTER WORKLOAD GROUP demogroup
USING pooldemo
GO

--Apply the changes to the Resource Governor
--in-memory configuration.
ALTER RESOURCE GOVERNOR RECONFIGURE
GO



O que há de novo em desempenho?
O desempenho geral de bancos de dados melhora no SQL Server 2008. Graças aos diversos
recursos novos do SQL Server 2008, você pode controlar e monitorar o desempenho de seus
bancos de dados e dos aplicativos que os utilizam.
Quando você tem grandes números de transações executadas a cada segundo, o bloqueio
que normalmente ocorre durante essas transações pode ter um pacto negativo sobre o
desempenho dos seus aplicativos de banco de dados. O SQL Server foi projetado para
reduzir o número total de bloqueios mantido por um processo ao escalonar bloqueios a partir
dos de menor nível de linha e de página até grandes bloqueios de nível de tabela. Mas é
importante compreender que esse escalonamento de bloqueios pode causar problemas. Por
exemplo, uma única transação pode bloquear uma tabela inteira e impedir que outras
transações trabalhem com ela.
O SQL Server 2008 funciona com o mecanismo de particionamento de tabelas (introduzido
no SQL Server 2005) para permitir que o mecanismo do SQL Server escalone bloqueios em
nível de partição antes de em nível de tabela. O nível intermediário de bloqueio pode reduzir
drasticamente os efeitos do escalonamento de bloqueios em sistemas que precisam
processar centenas e milhares de transações por segundo.
O SQL Server 2008 oferece diversos aperfeiçoamentos de processador de consultas novos
para quando a consulta interagir com tabelas particionadas. O otimizador de consultas agora
pode executar consultas em partições, como faria em índices individuais, ao trabalhar com a
ID da partição e não com o mecanismo de particionamento no nível de tabela.

O que há de novo em alta disponibilidade?
À medida que ambientes de banco de dados se tornam mais complexos e os bancos de
dados aumentam, a capacidade de garantir a sua disponibilidade se torna cada vez mais
difícil. Os mecanismos conhecidos que você usou no passado para obter alta disponibilidade
ainda estão presentes no SQL Server 2008. Mas alguns desses recursos foram aperfeiçoados
no SQL Server 2008 e outros novos foram adicionados.
Como SQL Server 2005, muitos administradores começaram a implementar o espelhamento
de bancos de dados para obter a alta disponibilidade. O SQL Server 2008 oferece várias
aprimoramentos para a prática do espelhamento de bancos de dados. No passado, por
exemplo, o espelhamento de bancos de dados ocasionalmente tinham problemas de
desempenho quando os dados do log de transações eram movidos do banco de dados
principal para os espelhados. Em resposta a isso, o SQL Server 2008 agora reduz a
quantidade de informações que é movida pela rede do log de transações do principal para o
log de transações do espelho ao compactá-las antes do envio para o log de transações do
espelho para proteção.
Agora você pode corrigir páginas de dados corrompidas no principal. Se um banco de dados
principal tiver páginas de dados corrompidas devido aos erros 823 e 824, poderá solicitar
uma cópia nova dessas páginas de dados dos servidores espelhados. Essa solicitação é um
processo automatizado transparente para qualquer usuário que estiver acessando os bancos
de dados principais.
Outro recurso novo, o Hot Add CPU, permite que você adicione CPUs novas a um servidor de
banco de dados sem afetar a disponibilidade dos bancos de dados que ele contém. No
entanto, saiba que o Hot Add CPU possui as suas limitações, já que ele só será útil se você
estiver executando o Windows Server® 2008 Enterprise Edition ou o Datacenter Edition
baseados em Itanium de 64 bits, além de exigir a Enterprise Edition do SQL Server 2008.

O que há de novo em segurança?
O SQL Server 2005 introduziu a segurança de dados na forma de criptografia de dados. Com
o SQL Server 2008, a criptografia foi bastante aprimorada com a introdução de dois
recursos: Gerenciamento Extensível de Chaves e Criptografia Transparente de Dados.
O Gerenciamento Extensível de Chaves permite que uma estrutura avançada armazene com
segurança as chaves usadas na infra-estrutura de criptografia — não só no próprio banco de
dados como também fora dele, em módulos de software de terceiros ou com um Módulo de
Segurança de Hardware.
A Criptografia Transparente de Dados oferece flexibilidade aprimorada para a criptografia de
dados ao permitir que ela seja uma propriedade do banco de dados e não somente o
resultado de funções em uma linha de código. O resultado é que os administradores não
precisam executar um grande número de alterações necessárias para a estrutura de seus
bancos de dados e para o código de aplicativos quando criptografarem no nível dos dados. O
código da Figura 4 mostra como você pode criptografar um banco de dados com a
Criptografia Transparente de Dados.
 Figure 4 Using Transparent Data Encryption

Copiar Código
USE master;
GO

--Create a master key
CREATE MASTER KEY ENCRYPTION BY PASSWORD =
'YouWillNeedToCreateAStrongPassword';
GO

--Create a certificate to use with TDE
CREATE CERTIFICATE TDECERT WITH SUBJECT = 'TDECert'
GO

--Change to the database to encrypt
USE AdventureWorks
GO

--Create your database master key
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128 --Use a strong algorithm
ENCRYPTION BY SERVER CERTIFICATE TDECERT
GO

--Alter the database to encrypt it with the
--master database key
ALTER DATABASE AdventureWorks
SET ENCRYPTION ON
GO



O que há de novo para desenvolvedores?
Os administradores de banco de dados não são as únicas pessoas que se beneficiarão
diretamente das alterações do SQL Server 2008. Há uma série de recursos novos que foram
projetados para ajudar os desenvolvedores de banco de dados. Eles vão desde novos
aprimoramentos de T-SQL até novos componentes que poderão ajudar os desenvolvedores a
criar e a utilizar consultas de banco de dados.
Muitos desenvolvedores de banco de dados são responsáveis pela criação das consultas
necessárias para o retorno dos dados para seus aplicativos. Provavelmente você já conhece
a ferramenta LINQ (Consulta Integrada à Linguagem), que permite aos desenvolvedores
gerar consultas em um banco de dados usando linguagem de programação baseada no
Microsoft® .NET em vez das instruções T-SQL normais. Bem, o SQL Server 2008 aprimora a
LINQ, oferecendo uma nova LINQ ao provedor de SQL, permitindo aos desenvolvedores
gerar comandos LINQ diretamente em tabelas e colunas do SQL Server. Isso reduzirá o
tempo para a criação de novas consultas de dados.
Ao desenvolver em bancos de dados, os desenvolvedores utilizam objetos de nível mais alto
que podem ser mapeados para tabelas e colunas individuais do banco de dados. Esses
objetos, conhecidos como entidades, representam os dados necessários para os aplicativos
de banco de dados e, portanto, o desenvolvedor não precisa compreender a estrutura de
armazenamento real dos dados e o esquema do banco de dados. O novo ADO.NET Entity
Framework permite que desenvolvedores criem consultas de banco de dados usando essas
entidades. A abstração da estrutura de banco de dados subjacente permite que os
desenvolvedores sejam mais produtivos.
O SQL Server 2008 oferece muitos aprimoramentos diferentes para o T-SQL, fazendo com
que os desenvolvedores tenham mais eficiência. Um exemplo é a nova instrução MERGE, que
permite ao desenvolvedor verificar a existência de dados antes de tentar inserir novos. Essa
verificação antes da execução da instrução INSERT permite que os dados sejam atualizados.
Não é mais necessário criar associações complexas para atualizar dados existentes e inserir
dados que ainda não existem, tudo durante uma única instrução.
Além disso, separar dados de hora e de data do tipo de dados data/hora ficou mais fácil. O
SQL Server 2008 introduziu dois tipos de dados separados para a manipulação de dados de
data e de hora. Tipos de dados diferentes significarão desempenho aprimorado para muitas
consultas, já que não haverá mais a necessidade da execução de uma operação nos dados
antes de sua utilização na consulta.
Ao criar estruturas de banco de dados mais novas, os desenvolvedores de banco de dados
quase sempre se vêem alongando a estrutura de bancos de dados para implementar
aplicativos de mapeamento. O SQL Server 2008 ajuda a corrigir esse problema com novos
tipos de dados espaciais. Os dois tipos de dados espaciais, GEOGRAPHY e GEOMETRY,
permitem que os desenvolvedores armazenem dados específicos de local diretamente no
banco de dados, sem a necessidade de divisão desses elementos de dados em formatos que
se ajustem a outros tipos de dados padrão. O código da Figura 5 é um exemplo de uma
tabela espacial simples.
 Figure 5 A simple spatial table

Copiar Código
IF OBJECT_ID ( 'Demo_SpatialTable', 'Table' ) IS NOT NULL
    DROP TABLE Demo_SpatialTable
GO

--Create table to hold spatial data
CREATE TABLE Demo_SpatialTable
    ( SpatialID int IDENTITY (1,1),
    SpatialInputCol geography,
    SpatialOutputCol AS SpatialInputCol.STAsText() )
GO

--Insert data into table
INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -122.360, 47.656
-122.343)', 4326));

INSERT INTO Demo_SpatialTable (SpatialInputCol)
VALUES (geography::STGeomFromText('POLYGON((47.653 -122.358, 47.649 -
122.348, 47.658 -122.348, 47.658 -122.358, 47.653 -122.358))', 4326));
GO

--View data to see that data has been converted and stored in col2
SELECT * FROM Demo_SpatialTable

No passado, um problema muito comum para desenvolvedores de banco de dados era a
forma como armazenar e utilizar objetos binários grandes, como documentos e arquivos de
mídia. O método normalmente usado era armazenar os arquivos fora do banco de dados e
simplesmente armazenar um ponteiro no banco de dados para o arquivo externo. Com esse
método, no entanto, ao mover o arquivo, você não podia se esquecer de atualizar o ponteiro.
O SQL Server 2008 lida com esse problema com o novo tipo de dados FILESTREAM. Com
esse tipo de dados, os arquivos ainda podem ser armazenados fora do banco de dados, mas
os dados são considerados parte do banco de dados para consistência transacional. Isso
possibilita a utilização de operações de arquivo comuns com a manutenção dos benefícios de
desempenho e de segurança do banco de dados.

E quanto ao business intelligence?
O uso cada vez maior do SQL Server nos últimos anos tem sido guiado em grande parte pela
adoção de estratégias de business intelligence. Os recursos de business intelligence não são
novidade para o SQL Server, mas o SQL Server 2008 possui algumas novidades.
Por exemplo, quando dados são armazenados em data warehouses, freqüentemente há
perdas de espaço devido a valores NULL. As colunas que armazenam valores NULL ocupam o
espaço do maior tamanho de dados permitido definido na coluna. Isso significa que uma
coluna com milhares de valores NULL pode consumir muitos MBs de espaço sem realmente
armazenar quaisquer dados.
O SQL Server 2008 apresenta as colunas esparsas, que possibilitam o armazenamento de
valores NULL sem a ocupação de qualquer espaço físico do disco. Como as colunas esparsas
não consomem espaço real, as tabelas que as contêm podem exceder o limite de coluna de
1.024.
O SQL Server 2008 também apresenta um novo mecanismo, Captura de Dados Alterados,
para o gerenciamento de alterações incrementais que precisam ser carregadas no data
warehouse. Ele captura e coloca os dados alterados em um conjunto de tabelas de
alterações. Capturar dados atualizados, excluídos e inseridos em um esquema de
armazenamento que pode ser facilmente utilizado permite o carregamento incremental de
data warehouses a partir dessas tabelas — ao contrário de ter de criar instruções de inserção
personalizadas que tentam descobrir quais são as alterações feitas em linhas existentes de
dados antes da atualização do data warehouse.

Conclusão
Esta é somente uma rápida visão geral das novidades do SQL Server 2008. Ele trará um
amplo conjunto de novos recursos e de atualizações de recursos existentes para melhorar a
vida dos administradores e dos desenvolvedores de banco de dados. Por fim, ele oferecerá
desempenho e escalabilidade aprimorados para os bancos de dados cada vez mais exigentes
de hoje.

				
DOCUMENT INFO