SQL Server

Alterando o schema de objetos em lote

Não vou entrar aqui no mérito do que são os schemas e como especificamos (deixemos isso para um outro momento).
Quero apenas deixar o seguinte cenário:
Um usuário criou uma série de scripts e, ao aplicá-lo no banco, todos os objetos ficaram com o nome do usuário no schemausuário.procedure, usuario.function, usuario.table

Como ajustar isso, sem que seja necessário abrir cada objeto individualmente e colocar no schema correto (vamos usar o schema dbo aqui, para simplificar as coisas)?

Read More

Renomeando um Profile ou Account Name (Database Mail)

Muito provavelmente, para utilizar o Database Mail dentro do SQL Server você utilizou a interface gráfica…

Criou o profile, a conta, ativou como público (né, fala a verdade…) e manteve as opções padrão.

Os e-mails estão sendo enviados normalmente, até que surge a necessidade de criar um outro profile. Como o nome ficou parecido, você resolve ir nas configurações do database mail e mudar o nome do profile anterior:
Botão direito em Database Mail -> Configure Database Mail -> View, Change, or delete an existing Profile, seleciona o profile desejado e… fuéfuéfué… Como altera o nome?

Pois é, não dá…. Não pela interface gráfica!!

Existe uma procedure para fazer a mágica (na base msdb): sysmail_update_profile_sp. Veja os três parâmetros:

Para alterar o nome, o parâmetro @profile_id deve ser informado. Caso não seja, apenas a descrição é alterada.

E como eu sei qual o profile_id? Simples, vai na interface do Database Mail que estava aberta lá em cima e… feche, porque também não dá. Consulte essa tabela:

O mesmo acontece com as contas de e-mails vinculadas ao profile, mas a procedure se chama: sysmail_update_account_sp e a tabela para buscar o @account_id é a sysmail_account.

[]’s!

Read More

“Login failed for user ‘NT Authority\ANONYMOUS LOGON’ ” ao criar um Linked Server

Ao criar um Linked Server entre dois servidores com SQL Server 2008, via Windows Authentication, me deparei com o erro abaixo:

erro
Ops… Não era bem o que esperava…

Dando uma Googleada investigada, li que poderia ser por causa da delegação via Kerberos não estar funcionando. O nome do “cara”: Kerberos constrained delegation.

Read More

Usando o Some | Any | All

Olhando os operadores lógicos do SQL Server (link), me deparei com algo curioso, que até então não tinha visto: os operadores Some, Any e All que, vejam só, está disponível desde do SQL Server 2008. #facepalm

O objetivo deles: Comparar um valor escalar (lembrem-se disso) com os valores de um dataset (a.k.a. subquery). O ALL validará se TODOS os valores do dataset correspondem ao valor comparado. O SOME e o ANY são equivalentes, eles retornaram TRUE se algum dos valores do dataset corresponder à comparação.
Se você ouviu um IN na explicação, pense nele como um IN com esteroides para um valor escalar, uma vez que você pode validar com os operadores =, <, >, <>, etc.

Read More

Escapando caracteres usando o ESCAPE

Pessoal, aproveitando para tirar um pouco a poeira, uma dica rápida que surgiu no trabalho hoje…

Como sabemos (sabemos, né?), temos alguns caracteres que são chamados de coringas, para facilitar a busca por um padrão.
Não vou explicar aqui o que cada um faz, mas eles são: %, _ , [], [^]

O problema: Quero pesquisar na minha tabela por todas as linhas que comecem com [OK]. Porém, se eu fizer um simples WHERE Coluna like ‘[OK]%’ (um exemplo esdrúxulo, mas que mantém o fluxo do raciocínio), a consulta vai me retornar todas as linhas que comecem com O ou com K e o que houver mais nesse registro, o que não é bem o que queremos.

A solução: ESCAPE!! Para fazer com que os coringas sejam interpretados como um caracter real, use o escape após a consulta e informe qual o caracter que será utilizado para fazer a inversão. Lembre-se de colocar esse caracter antes dos coringas. Eu particularmente gosto muito do | (pipe) e da \ (barra invertida) para fazer o papel de caracter de escape:

WHERE Coluna like ‘|[OK|]%’ ESCAPE ‘|’

Isso vai fazer com que a tua consulta pesquise pelo valor desejado: [OK], ok?

E era isso!

[]’s!

Read More
%d blogueiros gostam disto: