Aconteceu comigo uma vez, tentando iniciar o tomcat em um computador com windows xp service pack 2. Estava tudo instalado certinho, configurado, mas o tomcat não iniciava de jeito nenhum. Aparecia a mensagem: 'O Windows não pôde iniciar o Apache Tomcat em Computador local. Para obter mais informações, examine o log de eventos do sistema. Se este for um serviço não-Microsoft, contate o fornecedor do serviço e informe o código de erro específico do serviço.'
Descobri em um forum que ao copiar o arquivo JAVA_HOME/bin/msvcr71.dll para CATALINA_HOME/bin funciona. Então eu copiei C:\Arquivos de programas\Java\jre1.6.0_06\bin\msvcr71.dll
para C:\Arquivos de programas\Apache Software Foundation\Tomcat 6.0 e pronto.
Alguns dizem que copiando para o system32 também funciona.
17 dezembro 2008
[Tomcat] Erro ao inicializar o serviço do apache tomcat
Postado por Jessé Cerqueira às 12:28 10 comentários
05 dezembro 2008
[SQL SERVER] limpar database - truncate
Segue uma rotina para limpar a data base usando truncate table.
obs: Lembrando que truncate zera todos os identitys
IF EXISTS (Select [name] from sys.tables where [name] = 'TAB_FK_TRUNCATE' and type = 'U')
truncate table TAB_FK_TRUNCATE
go
IF NOT EXISTS (Select [name] from sys.tables where [name] = 'TAB_FK_TRUNCATE' and type = 'U')
Create table NomeDaDatabase.dbo.TAB_FK_TRUNCATE (
ID int identity (1,1),
NomeDaConstraint varchar (255),
TabelaPai varchar(255),
ColunaPaiPK varchar(255),
TabelaFilha varchar(255),
ColunaFilhaFK varchar(255),
FKOrder int
)
go
insert into NomeDaDatabase.dbo.TAB_FK_TRUNCATE(NomeDaConstraint,TabelaPai,ColunaPaiPK,TabelaFilha,ColunaFilhaFK,FKOrder)
SELECT object_name(constid) as NomeDaConstraint,object_name(rkeyid) TabelaPai
,sc2.name ColunaPaiPK
,object_name(fkeyid) TabelaFilha
,sc1.name ColunaFilhaFK
,cast (sf.keyno as int) FKOrder
FROM sysforeignkeys sf
INNER JOIN syscolumns sc1 ON sf.fkeyid = sc1.id AND sf.fkey = sc1.colid
INNER JOIN syscolumns sc2 ON sf.rkeyid = sc2.id AND sf.rkey = sc2.colid
ORDER BY rkeyid,fkeyid,keyno
declare @NomeDaConstraint varchar (max)
declare @TabelaFilha varchar (max)
declare @TabelaPai varchar (max)
declare @ColunaFilhaFK varchar (max)
declare @ColunaPaiPK varchar (max)
declare @FKOrder smallint
declare @sqlcmd varchar (max)
declare drop_constraints cursor
fast_forward
for
SELECT object_name(constid) as NomeDaConstraint,object_name(rkeyid) TabelaPai
,sc2.name ColunaPaiPK
,object_name(fkeyid) TabelaFilha
,sc1.name ColunaFilhaFK
,cast (sf.keyno as int) FKOrder
FROM sysforeignkeys sf
INNER JOIN syscolumns sc1 ON sf.fkeyid = sc1.id AND sf.fkey = sc1.colid
INNER JOIN syscolumns sc2 ON sf.rkeyid = sc2.id AND sf.rkey = sc2.colid
ORDER BY rkeyid,fkeyid,keyno
open drop_constraints
fetch next from drop_constraints
into
@NomeDaConstraint
,@TabelaPai
,@ColunaPaiPK
,@TabelaFilha
,@ColunaFilhaFK
,@FKOrder
while @@Fetch_status = 0
begin
select @sqlcmd = 'alter table '+@TabelaFilha+' drop constraint '+@NomeDaConstraint--+' foreign key '+'('+@ColunaFilhaFK+')'+' references '+@TabelaPai+' ('+@ColunaPaiPK+')'+' on delete no action on update no action'
If EXISTs (select object_name(constid) from sysforeignkeys where object_name(constid) = @NomeDaConstraint)
exec (@sqlcmd)
fetch next from drop_constraints
into
@NomeDaConstraint
,@TabelaPai
,@ColunaPaiPK
,@TabelaFilha
,@ColunaFilhaFK
,@FKOrder
end
close drop_constraints
deallocate drop_constraints
go
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
go
EXEC sp_MSForEachTable 'truncate TABLE ? '
print 'All tables truncated'
go
obs: Não utilizem em sistemas feitos em maker, pois essa rotina limpa todas as tabelas FR também
Fonte: databasejournal
Postado por Jessé Cerqueira às 16:31 0 comentários
25 novembro 2008
[SQL SERVER] Listar todas as tabelas e colunas em uma database
Com essa query, é possível fazer uma listagem das tabelas de uma database com as colunas e detalhes como tipo, tamanho, e se o campo aceita nulo. É possível listar os campos de uma tabela adicionando um filtro TABELAS.NAME = 'tabela desejada' ou listar as views (XTYPE = 'V') ou procedures (XTYPE = 'P')
SELECT
TABELAS.NAME AS TABELA,
COLUNAS.NAME AS COLUNA,
TIPOS.NAME AS TIPO,
COLUNAS.LENGTH AS TAMANHO,
COLUNAS.ISNULLABLE AS EH_NULO
FROM
SYSOBJECTS TABELAS
INNER JOIN SYSCOLUMNS COLUNAS ON (TABELAS.ID = COLUNAS.ID)
INNER JOIN SYSTYPES TIPOS ON (COLUNAS.USERTYPE = TIPOS.USERTYPE)
WHERE
TABELAS.XTYPE = 'U' /*'U' = TABELAS*/
ORDER BY TABELAS.NAME
Postado por Jessé Cerqueira às 10:19 2 comentários
15 outubro 2008
[SQL SERVER] Configurando o Firewall (Zone Alarm) para permitir comunicação com outros aplicativos
Para que as conexões remotas funcionem no SQL Server 2005, o Zone Alarm deve ter exceções para as instâncias do SQL Server 2005 e o serviço do Navegador do SQL Server (SQL Server Browser). Ao tentar utilizar o Webrun por exemplo, o firewall bloqueia o sql server e antes da tela de login, e exibe o erro: "Network error IOException: Connection refused: connect", conforme a imagem logo abaixo.
A liberação no Firewall deve ser feita para cada instância que terá suas conexões remotas permitidas. Realizar estas exceções em cada instância do SQL Server é necessária pelo fato de ser permitido instalar diversas instâncias do SQL Server em um mesmo servidor. Cada instalação do SQL Server é chamada de instância, e cada uma pode ter quantos Bancos de Dados forem necessários. Para colocar uma instância do SQL Server nas exceções do Zone Alarm, devemos abrir o menu em Program Control, ia na aba Programs, clicar em ADD e procurar o arquivo SqlServr.exe que por padrão, encontra-se na pasta C:\Arquivos de Programas\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.
Após adicionar o sqlserv.exe, deve marcar Access e server com Allow.
A pasta MSSQL.1 é a pasta referente à instância 1 do SQL Server. Se for colocar uma exceção para uma segunda instância do SQL, o arquivo SqlServr.exe deve ser localizado na pasta MSSQL.2.
Para colocar uma exceção ao serviço do SQL Server Browser, devemos seguir os mesmos passos que percorremos para colocar exceção à instância do SQL Server, a única diferença será procurar o arquivo SqlBrowser.exe que por padrão está na pasta C:\Arquivos de Programas\Microsoft SQL Server\90\Shared.
Postado por Jessé Cerqueira às 17:17 0 comentários
19 setembro 2008
[SQL SERVER] ALTERAR IDIOMA(LANGUAGE) DO BANCO DE DADOS
Quem ja teve dor de cabeça com idiomas do banco de dados utilizado para desenvolver um sistema diferente do idioma do banco de dados utilizado pelo cliente, sabe como é importante tratar isso na aplicação, mas, pra quem não fez esse tratamento, é so alterar o idioma do banco do seu cliente e deixar igual ao seu. Logo abaixo, tem um passo a passo para fazer essa alteração.
--EXIBIR TODOS OS IDIOMAS EXISTENTES NO BANCO
USE MASTER
SELECT * FROM SYSLANGUAGES
-- EXIBIR A ATUAL CONFIGURACAO DE IDIOMA
USE NOMEDOSEUBANCO
SELECT @@language, @@langid
-- DEFINIR O IDIOMA DEFAULT PARA O SERVIDOR (27 = PORTUGUES)
EXEC sp_configure 'default language', 27
-- DEFINIR O IDIOMA PARA CADA LOGIN DO SERVIDOR
EXEC sp_defaultlanguage 'sa', 'Português (Brasil)'
-- COMANDO PARA RECONFIGURAR ALTERACOES FEITAS
RECONFIGURE
-- APOS ISSO SERA PRECISO DAR UM STOP e START NO SQL SERVER
Postado por Jessé Cerqueira às 10:57 4 comentários
18 setembro 2008
[SQL SERVER] DESABILITAR RELACIONAMENTOS DE UMA TABELA
Para desabilitar todos os relacionamentos de uma tabela a escolha, é so utilizar esse script, alterando apenas o nome da tabela. Depois so não pode esquecer de habilitar os relacionamentos novamente.
DECLARE
@NOME_FOREIGN VARCHAR(100),
@PARENT INT,
@NOME_TABELA VARCHAR(100)
DECLARE NOMES_FOREIGN CURSOR FOR
SELECT NAME, PARENT_OBJ FROM DBO.SYSOBJECTS
WHERE OBJECTPROPERTY(ID,N'ISFOREIGNKEY') = 1
and name like '%NOME DA TABELA%'
OPEN NOMES_FOREIGN
FETCH NEXT FROM NOMES_FOREIGN INTO @NOME_FOREIGN, @PARENT
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @NOME_TABELA = NAME FROM DBO.SYSOBJECTS WHERE ID = @PARENT
PRINT 'DESABILITA CHAVE ESTRANGEIRA: ' + @NOME_TABELA + ' - ' + @NOME_FOREIGN
EXEC('ALTER TABLE [' + @NOME_TABELA + '] NOCHECK CONSTRAINT [' + @NOME_FOREIGN + ']')
FETCH NEXT FROM NOMES_FOREIGN INTO @NOME_FOREIGN, @PARENT
END
CLOSE NOMES_FOREIGN
DEALLOCATE NOMES_FOREIGN
Postado por Jessé Cerqueira às 23:28 0 comentários
[SQL SERVER] HABILITAR RELACIONAMENTOS DE UMA TABELA
DECLARE
@NOME_FOREIGN VARCHAR(100),
@PARENT INT,
@NOME_TABELA VARCHAR(100)
DECLARE NOMES_FOREIGN CURSOR FOR
SELECT NAME, PARENT_OBJ FROM DBO.SYSOBJECTS
WHERE OBJECTPROPERTY(ID,N'ISFOREIGNKEY') = 1
-- AND NAME LIKE '%' + @SISTEMA + '%' ESCAPE '#'
and name like '%NOME DA TABELA%'
OPEN NOMES_FOREIGN
FETCH NEXT FROM NOMES_FOREIGN INTO @NOME_FOREIGN, @PARENT
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @NOME_TABELA = NAME FROM DBO.SYSOBJECTS WHERE ID = @PARENT
PRINT 'HABILITA CHAVE ESTRANGEIRA: ' + @NOME_TABELA + ' - ' + @NOME_FOREIGN
EXEC('ALTER TABLE [' + @NOME_TABELA + '] CHECK CONSTRAINT [' + @NOME_FOREIGN + ']')
FETCH NEXT FROM NOMES_FOREIGN INTO @NOME_FOREIGN, @PARENT
END
CLOSE NOMES_FOREIGN
DEALLOCATE NOMES_FOREIGN
Postado por Jessé Cerqueira às 23:26 0 comentários
[MAKER - WEBRUN] Remover código fonte dos sistemas
Para quem vai instalar algum sistema feito em maker em algum cliente, e não quer seu código fonte a mercê, basta publicar seu sistema, deletar algumas tabelas FR, colocar o tomcat ou IIS e pronto.
OBS: ESSAS SÃO AS TABELAS QUE NÃO DEVEM SER DELETADAS
FR_SISTEMA
FR_USUARIO
FR_GRUPO
FR_USUARIO_GRUPO
FR_USUARIO_SISTEMA
FR_PERMISSAO
FR_LOG
FR_LOG_EVENT
FR_RELATORIO
FR_TAREFA
FR_TAREFA_TEMPO
FR_REGRAS
FR_SESSAO
FR_SESSAO_VI
Postado por Jessé Cerqueira às 23:05 0 comentários
18 agosto 2008
[SQL SERVER] Como saber se uma tabela é usada em alguma view ou procedure...
SELECT
NAME
FROM
SYSOBJECTS
WHERE
ID IN (
SELECT
ID
FROM
SYSDEPENDS
WHERE
DEPID = OBJECT_ID('NOME DA TABELA')
)
Postado por Jessé Cerqueira às 15:34 0 comentários
05 agosto 2008
[SQL SERVER] Algumas funções SQL bastante utilizadas
Funções de agrupamento:
AVG() = Retorna o valor médio de uma coluna específica
COUNT() = Retorna o número de linhas
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
Funções de manipulação de strings:
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
REPLICATE (string, integer) = Repete N vezes um caractere especificado
REPLACE (string, string, string) Em uma expressão(1º parâmetro), essa função substitui uma referida string (2º parametro) por qualquer outra especificada(3º parâmetro)
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 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
Month = mm, m
Day = dd, d
Week = wk, ww
Hour = hh
Minute = mi, n
Second = ss, s
Millisecond = ms
DW(dia da semana)
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
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
NULLIF (expressao_1, expressao_2) = retorna nulo se as duas expressoes forem equivalentes. Se não forem, retorna a primeira expressao.
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
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
SQRT (float) = retorna a raiz quadrada de um numero
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
Postado por Jessé Cerqueira às 11:25 0 comentários
[SQL SERVER] Descobrir tabelas e views dependentes
Quer descobrir quais sao as tabelas e views dependentes de uma determinada tabela?
O comando abaixo mostra todas as dependências da tabela a escolha, identificando as views com código 4 e tabelas com código 8. AS tabelas são as mesmas se for pelo enterprise e criar um novo diagrama adicionando todas as dependências da tabela
exec sp_MSdependencies N'[dbo].[NOMEDATABELA]', null, 1315327
Postado por Jessé Cerqueira às 11:04 1 comentários
29 julho 2008
[SQL SERVER] Como identificar a versão e qual service pack está instalado?
SELECT SERVERPROPERTY('productversion')
SELECT SERVERPROPERTY('productlevel')
Postado por Jessé Cerqueira às 17:24 0 comentários
[SQL SERVER] Criar tabela a partir de outra via script
Se você tem uma tabela, e quer criar outra com os mesmos dados mas alterando a ordem de colunas, ou até adicionar e excluir alguma outra coluna, pode usar essa solução.
select
campo1
,campo2
,campo3
into NOMEDANOVATABELA
from NOMEDOBANCO..NOMEDATABELA
Postado por Jessé Cerqueira às 13:18 1 comentários
25 julho 2008
[SQL SERVER] Desabilitar identity
Desabilitando identity no SQL SERVER 2000.
para desabilitar:set IDENTITY_INSERT nomeTabela on
para habilitar:set IDENTITY_INSERT nomeTabela off
OBS.: se vc esquecer de habilitar o campo identity não tem problema, pois o comando só vale para a conexão atual.
Postado por Jessé Cerqueira às 13:21 1 comentários
22 julho 2008
[REPORT BUILDER] Como usar um mesmo filtro duas vezes?
Se você está utilizando o Report Builder você quer utilizar um período num filtro, e seus registros devem estar dentro desse período, mas deve trazer registros anteriores a esse período também em alguns casos, o que fazer? O problema que eu tive foi num Extrato Bancário. Eu precisava trazer todos os débitos e créditos dentro de um período, mas precisava trazer também os débitos/créditos que ainda não foram conciliados até esse período. A solução que eu encontrei foi:
1- Criar um evento no OnCreate do relatório chamando uma procedure para preencher uma tabela ja com os filtros necessários
var
INICIO,FIM,VSQL, FILTRO2:string;
begin
PERIODO := Report.AutoSearchCriteriaByName('NOMEDODATASET', 'CAMPO_PERÍODO').SearchExpression;
FILTRO2 := Report.AutoSearchCriteriaByName('NOMEDODATASET', 'CAMPO_FILTRO2').SearchExpression;
DATA_FIM := StrToDate(Copy(PERIODO, 12, 10));
INICIO := Copy(PERIODO, 1, 10);
FIM := Copy(PERIODO, 12, 10);
CamposREL := TStringList.Create;
CamposREL.add('CAMPO');
VSQL:= ('DECLARE @DATAINI DATETIME ,@DATAFIM DATETIME, @OUTRO_FILTRO INT SET @DATAINI = CONVERT(DATETIME,'''+INICIO+''',103)SET @DATAFIM = CONVERT(DATETIME,'''+FIM+''',103)SET @OUTRO_FILTRO = CONVERT(INT,'+FILTRO2+',1) execute XXX_PROCEDURE_FILTRO_SP @DATAINI,@DATAFIM, @OUTRO_FILTRO select 1 as CAMPO');
execsql(Report, VSQL, CamposREL, false);
end;
2- Criar a tabela a ser preenchida com todos os campos necessários para sua projeção
3- Criar a procedure para preencher a tabela. Abaixo tem um exemplo de uma procedure simples que deleta a tabela, e preenche com o novo filtro.
CREATE PROCEDURE dbo.XXX_PROCEDURE_FILTRO_SP
( @DATA_INICIO DATETIME, @DATA_FIM DATETIME, @FILTRO2 INT )
AS BEGIN
DELETE FROM XXX_TABELA
INSERT INTO XXX_TABELA
(CAMPO1,CAMPO2,CAMPO3,CAMPOX,DATA_EMISSAO,DATA_PAGAMENTO)
SELECT
CAMPO1,
CAMPO2,
CAMPO3,
CAMPOX,
DATA_EMISSAO,
DATA_PAGAMENTO
FROM
XXX_TABELA
WHERE
((DATA_EMISSAO BETWEEN @DATA_INICIO AND @DATA_FIM) OR
((DATA_PAGAMENTO > @DATA_FIM or DATA_PAGAMENTO is null) AND
(DATA_EMISSAO < @DATA_INICIO))) AND (CAMPOX = @FILTRO2
END)
4- Fazer o relatório com essa tabela ja filtrada como dataset principal
Postado por Jessé Cerqueira às 10:23 1 comentários