sexta-feira, 2 de agosto de 2013

Curiosidade: Protocolo VIA no SQL Server 2012

Quem aqui já não viu lá no Configuration Manager do SQL Server na aba Network Configuration o protocolo VIA? Protoloco esse pouco visto no mercado sendo utilizado. Eu particularmente nunca vi ou conheci alguém que  utilizou esse protocolo em produção, pois ele é muito especifico para um determinado tipo de hardware.
Pois bem, a curiosidade é que no SQL Server 2012 esse protocolo foi retirado da lista dos protocolos disponíveis.

Habilitando sql authentication e o usuário “SA”

Um problema comum quando se utiliza o SQL Server é quando não é possível entrar com usuários SQL Server, exemplo o super usuário “sa”, pois durante a instalação foi configurado para Windows Authentication.

Como mencionado em um post no Fórum do MSDN: “Criei a instância, criei senha para meu login, mais quando vou entrar pela autenticação do SQL SERVER, ele dá erro, já pela da autenticação do Windows ele dá certo…”

Visto que não é possível ficar reinstalando o SQL Server, somente para trocar a autenticação de Windows Authentication para “Mixed” Authentication, segue neste post a solução para este problema.

Primeiramente é necessário entrar no SQL Server utilizando o SQL Server Management Studio. Conforme a figura abaixo, estou conectando em uma instância do SQL Server 2008 Express utilizando a autenticação Windows Authentication, mas este exemplo funciona perfeitamente no SQL Server 2005 e nas edições superiores.

090524_01

Após conectar, clicando com o botão direito do mouse sobre a instância do SQL Server na janela Object Explorer (Atalho F8 ou Menu “View\Object Explorer”), item Properties.

090524_02

Nesta nova janela, na aba (“página”) Security, altere “Server authentication” para “SQL Server and Windows Authentication mode”.

090524_03

Feito isso, uma janelinha informará que para esta alteração ter efeito, será necessário que o serviço do SQL Server deve ser reiniciado. Mas isso pode ser feito depois, quando for terminada a configuração dos usuários do SQL Server, então deixe para depois.

090524_04

Continuando na janela Object Explorer, expandindo a instância, “folder” Security\Logins, pode ser criado novos usuários do SQL Server ou seguindo o objetivo inicial deste tópico, habilitar o usuário “sa”. Conforme a figura abaixo, botão direito sobre o login “sa”, menu Properties.

090524_05

Na nova janela, altere o password do usuário, também é possível alterar o “idioma” e o banco de dados padrão deste usuário nesta janela, entre outras funcionalidades.

090524_06

Na aba (“página”) Status, clique na opção “Grant” em “Permission to connect to database engine” e “Enable” em “Login”.

090524_07

Outra maneira pratica de habilitar o usuário “sa” é por meio de script, exemplo:

ALTER LOGIN sa ENABLE;
GO
ALTER LOGIN sa WITH PASSWORD = 'P@ssw0rdM0del0';
GO 

Então, agora resta reiniciar o SQL Server. Para não ter que entrar nos Serviços do Windows ou SQL Server Configuration Manager ou qualquer variante como arquivos .bat ou SQL Server Surface Area.

Uma dica é clicar com o botão direito na instância do SQL Server na janela Object Explorer e “Restart”.

090524_08

Clique em Yes nesta próxima janelinha, para dizer que você TEM CERTEZA QUE QUER REINICIAR O SERVIÇO…

090524_09

Agora é só conectar com o usuário “sa” para testar.

090524_10

SQL Server 2012 – FileTable

Criação da base de dados com FileGroup e FileStream habilitado


CREATE DATABASE solucoesdba
ON
PRIMARY ( NAME = Arch1,
    FILENAME = 'd:\SQL_Server\2012\Data\solucoesdba.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = Arch3,
    FILENAME = 'd:\SQL_Server\2012\Data\filestream')
LOG ON  ( NAME = Archlog1,
    FILENAME = 'd:\SQL_Server\2012\Log\solucoesdba.ldf')
GO

Criação da pasta dentro do FileStream para a utilização da FileTable

ALTER DATABASE BlogFileTable SET FILESTREAM( NON_TRANSACTED_ACCESS = FULL, 
DIRECTORY_NAME = 'solucoesdba') WITH NO_WAIT
GO


Aqui,voce já deve poder visualizar se o acesso FileStream esta habilitado em sua base de dados, vide select:

SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options;

Todos os arquivos que iremos visualizar estará contido em uma tabela, obviamente, portanto, devemos criar esta tabela, que possui uma sintaxe curiosa, e um pouco diferente de um CREATE TABLE regular…

CREATE TABLE Documentos AS FileTable
    WITH ( 
          FileTable_Directory = 'solucoesdba',
          FileTable_Collate_Filename = database_default
         );
GO

Agora, basta você copiar e colar os arquivos no caminho especificado, que no meu caso, é: \\servidor\mssqlserver\solucoesdba\solucoesdba

Caso voce não esteja conseguindo abrir a pasta, execute:

SELECT FileTableRootPath ('Documentos', 2)
Ou seja, trocando “Documentos” pelo nome da sua tabela FileTable

O select nesta tabela pode e deve ser feito normalmente:

SELECT * FROM Documentos
Aonde sera possível encontrar N informações sobre o arquivo.


Outra curiosidade é a possibilidade de se criar diretórios, ou seja, alem de automático  sua arquivos também pode ficar organizados!

segunda-feira, 29 de julho de 2013

Gráfico para crescimento da base

É muito importante acompanharmos o crescimento dos arquivos de dados para podermos trabalhar preventivamente a questão de espaço em disco, além de melhorar o planejamento quando vamos configurar o tamanho dos arquivos. Hoje vamos gerar um gráfico como este: 
Primeiro vamos criar uma tabela para armazenar os dados, com uma coluna para data e outra para o tamanho:
-- coloque o nome de sua base no lugar de AventureWorks2008R2
USE AdventureWorks2008R2
CREATE TABLE datagrowth
(dia varchar(12) not null,
tamanho int not null)
Agora precisamos coletar os dados e inserí-los na tabela que criamos. Podemos obtê-los da sys.master_files da seguinte forma:
INSERT INTO datagrowth (dia, tamanho)
(SELECT CONVERT(VARCHAR(20),GETDATE(),6) AS dia, SUM(Size * 8 / 1024) AS tamanho
FROM sys.master_files 
WHERE name LIKE 'AdventureWorks2008R2_Data%')
SELECT * FROM datagrowth

Colocamos este código em um job para rodar diariamente e teremos esta informação para vários dias. Depois de alguns dias, faça novamente um SELECT na tabela filegrowth, copie e cole tudo no Excel. Selecione tudo e clique em Inserir:
Agora basta clicar em gráfico de linha e escolher o modelo que você quer. Neste exemplo vamos pegar o mais simples:
Com o gráfico na mão, agora é só ajustar tamanho, cores e editar o que você quiser:
Agora após pequenos ajustes:
Pronto, gráfico na mão. Agora é só justificar a compra de novos discos para antes do final do ano.

Verifica status dos Jobs

O Script abaixo fornece uma maneira simples de você verificar em qual estado encontra-se seu Job, sendo assim possível visualizar os valores: Falhou, Completou com sucesso, Cancelado e Nunca utilizado.

select job.name as nome,  
description as descricaocast(isnull(NULLIF(SUBSTRING(cast(last_run_date as varchar(50)),1,4),'0') +'-'SUBSTRING(cast(last_run_date as varchar(50)),5,2) + '-'SUBSTRING(cast(last_run_date as varchar(50)),7,2),'2999-12-31'as datetimeas UltimaExecucaoStatus =  
case when cast(last_run_outcome as varchar(10)) = 0 then 'Falhou'  
     when cast(last_run_outcome as varchar(10)) = 1 then 'Completou com sucesso'  
     when cast(last_run_outcome as varchar(10))= 3 then 'Cancelado' 
     when CAST(last_run_outcome as varchar(15)) = 5 then 'Nunca utilizado'  
else cast('Desconhecido' as varchar(15)) 
end 
from msdb.dbo.sysjobs as job 
left outer join msdb.dbo.sysjobservers as jobServer 
on job.job_id = jobServer.job_id 
where job.name not in ('syspolicy_purge_history','Output File Cleanup''sp_delete_backuphistory','sp_purge_jobhistory'order by nome