17 dezembro 2008

[Tomcat] Erro ao inicializar o serviço do apache tomcat

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.'
Erro Tomcat
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.

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

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

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.

1

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.

2

3

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.


4

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

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