FGID propery is incorrect

A algumas semanas o pessoal me ligou com um problema em uma base de um cliente. A base possuia 180GB, divididos em 6 arquivos todos no FG Primary,,, Dois destes arquivos estavam em unidades que apresentaram problemas e o pessoal conseguiu recuperar utilizando aqueles programas de recuperação RAW. Quando acessei o ambiente a base estava … Continuar lendo

Videos em PT da comunidade netponto

Hoje aproveitamos este espaço para dar a conhecer a comunidade netponto com presença na net em http://netponto.org/.

http://netponto.org/


"A comunidade NetPonto é uma iniciativa independente e sem fins lucrativos, que tem como simples e único objectivo a partilha de conhecimento na área de arquitectura e desenvolvimento de software na plataforma .NET, na tentativa de disseminar o conhecimento diferenciado de cada um de seus membros."

Esta comunidade reune-se mensalmente e por vezes tem sessões sobre SQL Server na ótica dos programadores muito interessantes.

Uma das particularidades mais notáveis desta comunidade é o facto de gravarem as sessões presenciais e as mesmas serem disponibilizadas gratutitamente no sitio da comunidade.

Aproveitamos ainda este post para anunciar que o próximo encontro da comundiade será no dia 18 de Janeiro de 2014 (ver agenda)

SQL PASS Regional Mentor no Brasil

Fala galera, estou muito feliz em compartilhar com vocês esta notícia… No final de 2013 recebi o convite para ser Regional Mentor do PASS no Brasil. Então começei a estreitar mais o relacionamento com o Board Global do PASS, para assumir a posição que antes estava com o Luciano [Luti] Moreira (Blog | Twitter). A […]

The post SQL PASS Regional Mentor no Brasil appeared first on Think Think SQL.

Movimentação incorreta da TempDB/Validação do caminho físico no SQL Server 2014!


Fala galera tranquilo?

 Hoje vou comentar sobre um erro que pode ocorrer em seu SQL Server quando é feita uma movimentação incorreta dos arquivos da base de sistema TempDB, e sobre o que foi feito no SQL Server 2014 para evitar este problema.

 Minha simulação começa com o SQL Server 2005 RTM. Notem na tela abaixo que tenho 3 arquivos de dados para minha TempDB e 1 arquivo de log:



 Ok. Quero movimentar os arquivos de dados para outra unidade, só que sem querer vejam o nome físico que digitei no comando referente ao segundo arquivo NDF (tempdev_2), eu coloquei exatamente o mesmo nome físico do primeiro arquivo NDF (tempdev_1). Ou seja, dois arquivos de nomes lógicos diferentes apontando agora para um mesmo nome físico no disco:


 Erro? Negativo, o SQL Server acata meu comando e diz que a alteração será válida na próxima vez que o serviço for reiniciado:

The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started.
The file "tempdev_1" has been modified in the system catalog. The new path will be used the next time the database is started.
The file "tempdev_2" has been modified in the system catalog. The new path will be used the next time the database is started.


 Vamos então reiniciar o serviço via SQL Configuration Manager, faço o stop e logo na sequência o start do mesmo:


Parando...
 


Iniciando e...


Ops...

 O serviço não subiu. Vamos analisar no ERRORLOG do SQL Server o que pode estar ocorrendo, veja a mensagem marcada em vermelho, que interessante:

2014-01-06 04:22:18.63 spid9s      Starting up database 'tempdb'.
2014-01-06 04:22:18.94 spid9s      Error: 5171, Severity: 16, State: 2.
2014-01-06 04:22:18.94 spid9s      E:\MAGU\2005\tempdev_1.ndf is not a primary database file.
2014-01-06 04:22:19.00 spid9s      Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the event log that may indicate why the tempdb files could not be initialized.
2014-01-06 04:22:19.00 spid9s      SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no user action is required.
2014-01-06 04:22:19.02 Server      The SQL Network Interface library could not deregister the Service Principal Name (SPN) for the SQL Server service. Error: 0x54b. Administrator should deregister this SPN manually to avoid client authentication errors.
 Um erro bastante estranho. Bom, mas precisamos subir o SQL Server para tentar entender o que está ocorrendo. Abra um prompt de comando elevado, navegue até o diretório onde se encontram os binários do SQL Server, e execute o seguinte comando: 

sqlserver.exe -s MSSQL2005 -f -T3608 

 Reparem que minha instalação tem uma instância nomeada, por isso o parâmetro –s. O parâmetro -f, indica que quero subir o SQL Server com uma configuração mínima, montando apenas o Resource Database e o master. E o trace flag 3608 serve para não fazer o recovery dos bancos de dados de usuário.

 Se o comando for executado corretamente, a instância do SQL Server vai iniciar numa janela de console, algo parecido com tela abaixo:

 Abra outro prompt de comando elevado e use o SQLCMD para conectar a instância do SQL Server: 

sqlcmd -S .\MSSQL2005 -E 

 Note que uso o -S para indicar a instância que deve ser conectada, e o -E para indicar que a minha conta do Windows deve ser usada para o login (este parâmetro é opcional). Lembrando que neste ponto a instância aceita apenas um único login de usuário com privilégios de sysadmin, uma vez que a instância também está em single-user mode.
 Assim que o login for completado veremos o prompt do SQLCMD (1>_). Vamos conferir agora a tabela de sistema sysaltfiles, ela possui informações referentes aos arquivos das bases de dados. Digite os comandos abaixo em linhas separadas, dando ENTER ao final de cada um deles:





 Você verá algo parecido com a imagem abaixo, veja a parte correspondente a base TempDB, notem que dois nomes lógicos apontam para um mesmo arquivo físico no disco:

 Isto está impedindo nossa instância de subir, precisamos resolver isso, como? Agora que estamos logados na instância basta remover um dos arquivos, no caso estou removendo o segundo arquivo NDF com os comandos abaixo:



 Feito isso, vamos parar o SQL Server pressionando CTRL+C, depois digitando “Y” e dando ENTER:


 Volte no SQL Configuration Manager e inicie normalmente o SQL Server. Note que aogra a instância inicia normalmente:


 Este comportamento se repetiu nos meus testes com o SQL Server 2008, SQL Server 2008 R2 e SQL Server 2012. Mas com o SQL Server 2014 CTP2 (CTP1 também) a história ficou diferente. 

Repetindo os procedimentos no SQL Server 2014 CTP2... 

 Notem que em minha instância do SQL Server 2014 CTP2 tenho 3 arquivos de dados e 1 arquivo e log para o tempdb:

 Quero movimentar meus arquivos de dados do tempdb para outra unidade, porém cometo aquele mesmo erro que cometi no SQL Server 2005: aponto dois nomes lógicos para um mesmo arquivo físico no disco:


  
 Mas agora uma mensagem de erro é exibida quando um nome lógico aponta para um arquivo físico que já foi utilizado no ALTER DATABASE, veja a mensagem em destaque na tela abaixo:
 

The file "tempdev" has been modified in the system catalog. The new path will be used the next time the database is started.
The file "tempdev_1" has been modified in the system catalog. The new path will be used the next time the database is started.
Msg 12106, Level 16, State 1, Line 9
The path name 'D:\MAGU\2014\tempdev_1.ndf' is already used by another database file. Change to another valid and UNUSED name.
 Ou seja, no SQL Server 2014 foi introduzida uma validação dos arquivos físicos usados no ALTER DATABASE, evitando o problema que demonstrei de ocorrer em versões anteriores do SQL Server. Também testei o comando para bancos de dados de usuário, tentei mover um arquivo de dados para um mesmo caminho físico de um outro arquivo já existente e apenas o SQL Server 2014 não permitiu a movimentação.

--ATUALIZAÇÃO 22/08/2014--

Pessoal, apenas uma rápida atualização neste post. Através do Connect questionei a Microsoft o motivo deste comportamento nas versões anteriores ao SQL Server 2014, tive um retorno hoje dizendo que não irá haver correção para estas versões. Na minha opinião, para o SQL Server 2008 / 2008 R2 não seria razoável esperar por uma correção, uma vez que o suporte principal destes produtos terminou recentemente no dia 08/07/2014:

http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&alpha=sql+server+2008&Filter=FilterNO

Para o SQL Server 2012 havia uma esperança pois seu suporte principal só termina em 11/07/2017:

http://support.microsoft.com/lifecycle/search/default.aspx?sort=PN&alpha=sql+server+2012&Filter=FilterNO

Todo caso fica o alerta do problema para quem estiver rodando alguma destas versões =] 

O link do connect para quem tiver interesse segue abaixo:

https://connect.microsoft.com/SQLServer/feedbackdetail/view/813287/tempdb-alter-database-modify-file-allows-duplicated-physical-paths

Espero que tenham gostado do post pessoal, um abraço e até a próxima!
http://www.virtualpass.com.br/

Short Scripts – Janeiro – 2014

Bom dia, Comunidade…. Salve, Salve galera que gosta de Banco de Dados, mais especificamente o Microsoft SQL Server!!!! Estamos começando mais um ano de muita expectativa com o possível lançamento do Microsoft SQL Server 2014, mas enquanto esta nova versão no chega, vamos trabalhando com as atuais versões. Revirando o meu baú de Scripts, encontrei […]

SQL Server Code Encryption

Para abrir o apetite para a sessão do Etienne, no próximo encontro da comunidade SQL Port, aqui fica hoje uma breve descrição do que podemos fazer quando nos ofuscam o código. Sim, porque não se pode dizer que o código fique encriptado mas isso fica para outro post.

Imaginemos que temos uma stored procedure com um código altamente sensível com um algoritmo MEGA secreto. Podemos utilizar a cláusula WITH ENCRYPTION

A partir deste momento podemos executar a SP da forma habitual se tentarmos ver o conteúdo com a sp_helptext:

Ou mesmo via o SSMS:

Desta forma o código fica escondido mesmo daqueles que possuem permissão de execução.

Devemos ter em atenção que quando necessitamos de atualizar uma SP "encriptada" necessitamos do código fonte e como tal é necessário andarmos com uma cópia atrás.

Claro está que em caso de perdermos o código fonte podemos sempre fazer download das várias ferramentas existentes que permitem desofuscar o código. Um exemplo é a ferramenta dbForge SQL Decryptor:

Após instalação podemos navegar pelos objectos "a la SMSS" que podem ser encriptados:


e com um simples clique aceder ao código original

Esperemos que esta informação seja útil e até à próxima

4th day of Community Christmas presents of 2014 (SQLSaturday Portugal Workshops BI)

This post is a continuation from my Series of Community Presents for 2014 This time we share our SQLSaturday Workshops BI system, that we are using to evaluate progression on our workshops. As the previous one, this one is developed…

Passo-a-Passo: Instalação de uma instância SQL Server 2012 em cluster – Parte 3

Em continuação da série, iremos hoje entender como se adicionar um nó a uma instalação já feita, sendo esta uma instância em um nó ou mais.

Para seguir com is passos seguintes, é obrigatório ter pelo menos um nó instalado. Caso queira começar a instalação do zero, leia a parte 2 desta série.

Continuando... Conecte no nó em que a instalação será feita, no nosso caso W2012SRV04, e siga os seguintes passos:


  1. Com os mesmo binários utilizados na instalação anterior, clique em Setup.exe.

    Screen Shot 2013-12-09 at 12.38.54
  2. O "SQL Server Installation Center" Abrirá.

    Screen Shot 2013-12-09 at 12.39.28
  3. Ainda no "SQL Server Installation Center", clique em "Installation" e selecione "Add node to a SQL Server failover cluster".

    Screen Shot 2013-12-09 at 22.38.41
  4. Aguarde a verificação, e clique em "OK".

    Screen Shot 2013-12-18 at 14.46.07
  5. O setup irá buscar por actualizações. Mantenha a opção "Include SQL Server product updates" marcada e clique em "Next".

    Screen Shot 2013-12-09 at 22.39.51
  6. Outra verificação irá correr para identificar possíveis problemas. Clique em "Next".

    Screen Shot 2013-12-09 at 22.42.01
  7. Indique a chave e clique em "Next".

    Screen Shot 2013-12-09 at 22.42.17
  8. Aceite os termos e clique em "Next".

    Screen Shot 2013-12-09 at 22.42.28
  9. Agora confirme as definições de IP, assim como você fez no primeiro nó. Clique em "Next".

    Screen Shot 2013-12-09 at 22.45.02
  10. Indique as passwords para as contas de serviço do Engine e do Agent. Clique em "Next".

    Screen Shot 2013-12-09 at 22.45.36
  11. Como no nó anterior, você tem a opção de enviar relatórios de erro para a Microsoft. Clique em "Next".

    Screen Shot 2013-12-09 at 22.46.14
  12. Agora o setup irá verificar se o processo de instalação irá ser bloqueado durante a instalação. Clique em "Next" no fim desta verificação.

    Screen Shot 2013-12-09 at 22.46.26
  13. Reveja as opções escolhidas e clique em "Install".

    Screen Shot 2013-12-09 at 22.46.47
  14. Agora tenha paciencia... A instalação está a ser feita :) Clique em "Next" quando estiver completa.

    Screen Shot 2013-12-09 at 22.47.00
  15. Sucesso! O nó agora faz parte da instância!! Verifique se todas as features foram instaladas correctamente. Clique em "Close".

    Screen Shot 2013-12-09 at 22.56.08


No fim desta instalação, você terá mais um nó disponível para correr a sua instância. Isso significa que podemos fazer failover do nó  W2012SRV03 para o nó W2012SRV04. Agora temos uma solução de high availability montada, que nós ajudará a recuperar em caso de falha de hardware.

Por algum outro motivo, como em uma manutenção, você pode querer efectuar um failover manualmente. Para fazer isso abra o  Failover Cluster Manager (o mesmo utilizado no artigo anterior), clique com o botão direito sobre a Role do SQL Server (no nosso caso "SQL Server (DB)") ae escolha a opção "Move". Duas opção estarão disponíveis - "Best Possible Node" e "Select Node..."

Ambas são válidas, mas a segunda te da a oportunidade de escolha o nó para o qual iremos mover a Role. O que é útil no caso de termos mais do que dois nós disponíveis.


Screen Shot 2013-12-18 at 16.38.27

É isso por hoje! Estarei de volta em breve com a última parte desta série, falando sobre MS DTC em instância em cluster.

Até a próxima!!

3rd day of Community Christmas presents of 2014 (SQLSaturday Portugal BI)

This post is a continuation from my Series of Community Presents for 2014 Here is one of the most awesome things that we (SQLSaturday Portugal organizers) have – a small analytical system for tracking our progress with the registrations for…

Casos do Dia a Dia – Erro na conexão com o BD após a instação de um Service Pack

Olá Pessoal, Ao instalar um service pack em um servidor SQL Server, algumas pessoas param o serviço antes da instalação e outras não param. Eu confesso que paro o serviço para não ter tentativas de acessos na base durante a instalação. Quando você instala o Service Pack com o serviço do SQL Server parado, você [...]
Go to Top