Karuta’s ASP & M$ SQLserver

Dicas, códigos e outras coisinhas de meus estudos para não esquecer…

ALTERAR SCHEMA SQLSERVER

Publicado por karuta em Abril 27, 2009

– alterar SCHEMA todas SPs
SELECT ‘ALTER SCHEMA dbo TRANSFER ‘ + s.Name + ‘.’ + p.Name FROM sys.Procedures p
INNER JOIN sys.Schemas s on p.schema_id = s.schema_id WHERE s.Name = ‘dbo’

– alterar SCHEMA todas TABELAS
exec sp_MSforeachtable “ALTER SCHEMA dbo TRANSFER ? PRINT ‘? modified’ “

– alterar SCHEMA todas VIEWS
SELECT ‘ALTER SCHEMA dbo TRANSFER ‘ + s.Name + ‘.’ + p.Name FROM sys.Views p
INNER JOIN sys.Schemas s on p.schema_id = s.schema_id WHERE s.Name = ‘dbo’

Enviado em store procedure | Deixar um comentário »

Problemas com criação de um Diagrama (database diagrams) no sql2005

Publicado por karuta em Abril 24, 2009

 

erro = “Database diagram support objects cannot be installed because this database does not have a valid owner”

No SQL Server Management Studio verifique:

 

1. Right Click no seu database, vá em “properties”

2. Acesse a opção “Options” em “Select a page”

3. Veja se a combo “Compatibility Level” está em “SQL Server 2005(90)”

 

Se tudo estiver correto mude sua autorização para “sa” com o comando abaixo:

 
ALTER AUTHORIZATION ON DATABASE::[Nome do Database] TO sa

Enviado em sql server, store procedure | Deixar um comentário »

Remover “caracteres especiais” em campos do SQL Server

Publicado por karuta em Abril 8, 2009

REPLACE(REPLACE(REPLACE(MyField, CHAR(10), ”), CHAR(13), ”), CHAR(9), ”)

Enviado em store procedure | Deixar um comentário »

Fazendo um SELECT RANDÔMICO

Publicado por karuta em Março 17, 2009

Select a random row with MySQL:

SELECT column FROM table
ORDER BY RAND()
LIMIT 1

Select a random row with PostgreSQL:

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

Select a random row with Microsoft SQL Server:

SELECT TOP 1 column FROM table
ORDER BY NEWID()

Select a random row with IBM DB2

SELECT column, RAND() as IDX
FROM table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY

Thanks Tim

Select a random record with Oracle:

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1

Enviado em sql server, store procedure | Deixar um comentário »

Tirar Acentuação em ASP

Publicado por karuta em Novembro 8, 2008

Function TiraAcento(ByVal Palavra)
        cacento = “àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ^~´`’”
        sacento = “aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN”
        texto = “”
        If Palavra <> “” Then
            For x = 1 To Len(Palavra)
                letra = Mid(Palavra, x, 1)
                pos_acento = InStr(cacento, letra)
                If pos_acento > 0 Then
                    letra = Mid(sacento, pos_acento, 1)
                End If
                texto = texto & letra
            Next
            TiraAcento = texto
        End If
    End Function

————————————————————————————
chamando a função

CODEresponse.write(TiraAcento(“fórum Imasters.Programação é tudo”))

Enviado em asp | Deixar um comentário »

Funções Do Sql Server

Publicado por karuta em Outubro 10, 2008

Funções de agrupamento:

AVG() = Retorna o valor médio de uma coluna específica
BINARY_CHECKSUM() = O valor do BINARY_CHECKSUM computado sobre uma linha ou uma tabela ou sobre uma lista de expressões. BINARY CHECKSUM é usada para detectar alterações em uma linha ou uma tabela. 
CHECKSUM() = O valor de CHECKSUM computado sobre uma linha ou uma tabela, ou sobre uma lista de expressões. CHECKSUM é usada para construir índices de hash. 
CHECKSUM_AGG() = O valor de CHECKSUM de um grupo. Valores nulos são ignorados.
COUNT() = Retorna o número de linhas 
COUNT_BIG() = igual ao COUNT mas o COUNT_BIG sempre retorna um tipo de dados bigint.
MAX() = Retorna o valor máximo de uma coluna específica
MIN() = Retorna o valor mínimo de uma coluna específica
SUM() = Retorna a soma de uma coluna específica
STDEV() = Desvio padrão de todos os valores
STDEVP() = Desvio padrão da população
VAR() = Variância estatistica de todos os valores
VARP() = Variância estatística de todos os valores da população

Funções de manipulação de strings:

ASCII(string) = pega o valor em ASCII da string
CHAR(integer) = troca inteiro do ASCII em um caráter 
LEN(string) = Identifica o comprimento de uma expressão em caracteres 
LOWER(string) = converte uma string uppercase para lowercase.
LTRIM(string) = remove os espaços em branco
PATINDEX(posicao, expressao) = devolve a posicão de uma string dentro de um texto. Se não encontrar, retorna zero.
REPLICATE(string, integer) = Repete N vezes um caractere especificado
REVERSE(string) = retorna o inverso de uma expressao
RTRIM (string) = remove os espaços em branco à direita de uma string
SPACE(integer) = que retorna o número de espaços em branco informados no parâmetro 
STUFF(string texto, X, Y, string texto_a_inserir) = apaga da string “texto” os y caracteres a partir da posição x e os substitui por “texto_a_inserir”
SUBSTRING(string texto, posicao_inicial, tamanho) = retorna uma string com o comprimento definido em “tamanho” extraida da string “texto”, a partir da “posicao_inicial”
UPPER(string) = retorna string em maiusculas

Funções de manipulação de data/hora:

nomes das partes de data:

Year = yy, yyyy
Quarter = qualquer, que
Month = mm, m
Dayofyear = dy, y
Day = dd, d
Week = wk, ww
Hour = hh
Minute = mi, n
Second = ss, s
Millisecond = ms

DATEADD (parte, numero, data) = adiciona um valor a parte de uma data
DATEDIFF (parte, data inicial, data final) = subtrai a data inicial da data final, indicando o resultado na unidade definida em “parte”
GETDATE() = retorna a data atual do sistema
DATENAME (parte, data) = retorna o nome da parte de uma data
DATEPART(parte, data) = retorna a parte de uma data

Funções de Sistema:

CAST(expressao as datatype) = converte uma expressao no datatype informado
COL_LENGTH(nome_da_tabela, nome_da_coluna) = retorna o tamanho da coluna
COL_NAME(id_da_tabela, id_da_coluna) = retorna o nome da coluna
DATALENGTH(expressao) = retorna o numero de bytes usados para armazenar a expressao
DB_ID(nome_do_banco) = retorna o ID do banco informado
DB_NAME(id_do_banco) = retorna o nome do banco
HOST_ID() = retorna a ID da estação que está acessando o SQL Server
HOST_NAME() = retorna o nome da estação que está acessando o SQL Server
IDENT_INCR(nome_da_tabela_ou_view) = retorna o valor incrementado
IDENT_SEED(tabela_ou_view) = retorna o valor inicial da coluna
INDEX_COL(nome_da_tabela, indice_id, chave_id) = retorna o nome da coluna que participa do índice
ISNULL(expressao, valor) = se a expressao for null, troca pelo valor especificado
ISNUMERIC(expressao) = retorna 1 se a expressao for numerica e 0 se não for
NEWID() = retorna um novo valor do tipo uniqueidentifier
NULLIF(expressao_1, expressao_2) = retorna nulo se as duas expressoes forem equivalentes. Se não forem, retorna a primeira expressao.
OBJECT_ID(nome_do_objeto) = retorna o ID de um objeto, a partir do nome fornecido
OBJECT_NAME(ID_do_objeto) = retorna o nome do objeto, a partir do ID fornecido
PARSENAME(objeto, parte) = retorna a parte do nome de um objeto, desde que tenha sido qualificado 
STATS_DATE(tabela_id, indice_id) = retorna a data em que as estatísticas do índice foram atualizadas
SUSER_SID(nome_do_usuario) = retorna o ID do usuario informado
SUSER_NAME(usuario_id) = retorna o id do usuário no servidor. O argumento é opcional.
SUSER_SNAME(id_do_usuario) = retorna o nome do usuario informado. Se nenhum ID de usuario for passado para a função, retorna o nome do usuario logado
USER_ID(nome_do_usuario) = retorna o ID do usuario informado para o BD em uso
USER_NAME(id_do_usuario) = retorna o usuario conectado ao BD

Funções Matematicas:

ABS(numero) = retorna o valor absoluto do numero
ACOS(float) = retorna o arco-coseno do numero informado
ASIN(float) = retorna o arco-seno do numero informado
ATAN(float) = retorna o arco-tangente do numero informado
ATN2(Float expressao_1, float expressao_2) = Arco-tangente do valor definido pela divisão da primeira expressão pela segunda
CEILING(numero) = retorna o menor inteiro que seja maior ou igual ao numero informado
COS(float) = retorna o coseno do numero informado
COT(float) = retorna o cotangente do numero informado
DEGREES(numero) = converte radianos para graus
EXP(float) = retorna o exponencial de um numero especificado
FLOOR(numero) = retorna o maior inteiro que seja menor ou igual ao numero informado 
LOG(float) = retorna o logaritmo natural do numero informado
LOG10(float) = retorna o logaritmo base 10 do numero informado
PI() = retorna o valor de PI 3.1415926535897931.
POWER(numero, potencia) = retorna o valor elevado à potencia informada
RADIANS(numero) = converte graus para radianos
RAND(expressao) = um número aleatório entre 0 e 1. Expressão é opcional e será usada como semente da cadeia pseudo-aleatória
ROUND(numero, precisao, arredonda_ou_trancar) = arredonda ou tranca o numero fornecido de acordo com a precisao informada. Se o terceiro parametro não for passado para a funçao, o numero é arredondado. Se quiser que o numero seja truncado, deve-se fornecer o valor 1
SIGN(numero) = retorna sinal positivo, negativo ou zero do numero
SIN(float) = retorna o seno do angulo especificado
SQRT(float) = retorna a raiz quadrada de um numero
TAN(float) = retorna a tangente de um numero informado
SQUARE(float) = retorna o quadrado de um numero

Função de conversão:

CONVERT(tipo(tamanho), expressão, estilo) = converte a expressão para o tipo de dado. O tamanho e o estilo são opcionais

Enviado em sql server | Deixar um comentário »

SQL SERVER não traz NULL em um INNER JOIN

Publicado por karuta em Setembro 24, 2008

Se não está retornando nada, relaxe as restrições. Como vc não tem nenhum WHERE, só lhe resta relaxar os JOINs. O tipo de JOIN que você está fazendo não traz os dados caso a tabela filha não tenha a relação com a pai (tenha um NULL aí no meio). Mude os INNER JOIN para LEFT JOIN e verifique se não aparecem NULLs no resultado.

O fato é que se tem NULL num campo usado para fazer INNER JOIN, esse registro não será trazido. O INNER JOIN é uma operação que combina os registros de duas tabelas, sendo que se ele não existir em uma das tabelas (referência NULL), não constará no resultado. 

A mudança para LEFT modifica o JOIN para um OUTER, que adiciona o registro ao resultado mesmo que ele não conste numa das tabelas relacionadas (no caso, usando o LEFT, vai trazer mesmo que não conste na tabela filha).

Enviado em sql server | Deixar um comentário »

Gerando senha aleatórias

Publicado por karuta em Setembro 18, 2008

‘Nesta constante eu determino que letras e números serão utilizados para gerar a senha aleatória.
Const szDefault = “abcdefghijklmnopqrstuvxz0123456789″

‘Aqui eu chamo o comando Randozime do ASP para gerar um valor randômico para a nossa senha 
Randomize

‘Passa para a variavel os caracteres da seguencia szDefault e pego o tamanho da string para a variável nLenght 
sValidChars = szDefault 
nLength = Len( sValidChars ) 

‘Agora é a hora onde o script vai fazer um loop de 1 até 6 para gerar uma senha com 6 dígitos, caso necessite de uma senha com mais dígitos troque o valor 6 
For nCount = 1 To 6

‘Nesta linha o Script pega um número aleatório para buscar a posição dentro da constante trazendo o caracter correspondente a esta posição 
nNumber = Int((nLength * Rnd) + 1)

‘Acrescento a variável sRet o valor dela adicionado com o caracter encontrado dentro da constante
sRet = sRet & Mid( sValidChars, nNumber, 1 )

Passo para o próximo loop 
Next

Enviado em asp | Deixar um comentário »

Utilize Server.Transfer ao invés de Response.Redirect

Publicado por karuta em Setembro 18, 2008

Vocês certamente já utilizam a instrução Response.Redirect, que faz o desvio da execução para uma determinada página. Porém o Response.Redirect tem sérios problemas de performance: 

Quando vocês utilizam o Response.Redirect é enviado um pacote HTTP para o browser do usuário. Esse pacote contém uma instrução de redirecionamento. 

O Browser, então, solicita ao servidor o endereço recebido na instrução de redirecionamento, gerando o efeito desejado. 

Toda essa comunicação entre servidor e client pode ser evitada. O ASP 3.0 (Windows 2000) possui um método no objeto Server chamado Transfer. O método Transfer transfere a execução para uma outra página, assim como o Response.Redirect. 

A diferença do Transfer é que ele faz a transferência da execução dentro do servidor, sem transmitir pacotes para o browser do usuário. Isso torna a aplicação bem mais ágil. 

Veja : 

Server.Transfer(“home.asp”) 

Byhttp://www.bufaloinfo.com.br/dicas.asp?cod=106

Enviado em asp | Deixar um comentário »

Server.HTMLEncode

Publicado por karuta em Setembro 18, 2008

Server.HTMLEncode é uma função que serve para codificar uma string em HTML. Ah está tudo bem. E pra que raios serve isso? Bem aqui vai um exemplo prático:

Suponha que você tenha um site que permita o usuário cadastrar-se à vontade. Então, um engraçadinho resolve cadastrar o nome dele da seguinte maneira:

<font color=”red” style=”font-size: 30pt”>Adriano Nântua</font>

Pronto. De agora em diante, toda vez que o nome dele for escrito no site estará vermelho e bem grande, diferente das outras pessoas (isso se o palhaço não resolver botar tamanho 800 e esculhambar de vez o seu site).

Para evitar isso, na hora de escrever o nome, ao invés de fazer o usual:

<%=nome%>

faça o funcional:

<%=Server.HtmlEncode(nome)%>

Desta maneira, nome do espertinho, será escrito da mesma maneira que ele informou, pois a função codifica a string em HTML, escrevendo &lt; ao invés de <.

Obviamente, a função não serve somente para se proteger de usuários humoristas. Em geral serve para que os caracteres cadastrados sejam escritos fielmente.
Imagine que você vá jogar a string O filme “A Rocha” ganhou 20 prêmios no value de um input de texto. Só vai dar O Filme, pois o browser vai ler o ” como fim do value, e o resto da string vai ficar fazendo sujeira na Tag. Um desmantelo.
Basta usar, então, o Server.HTMLEncode para consertar as coisas.

Fonte: ASP4DEVELOPERS 

Enviado em asp | Deixar um comentário »