terça-feira, 27 de maio de 2008

Conexão direta do DBExpress com o Oracle

O DBExpress é uma forma de conexão dos aplicativos desenvolvidos em Delphi se conectarem com o banco de dados.
A empresa CoreLab desenvolveu drivers de conexão alternativos aos distribuídos pela Borland.
Uma das vantagens do driver para Oracle é a possibilidade de conexão com o servidor sem a necessidade da instalação do client do Oracle nas estações.
Para realizar este procedimento altere as seguintes propriedades no componente de conexão:

GetDriverFunc getSQLDriverORANET
Vendor Lib dbexpoda.dll
Database servidororacle:portaoracle:oraclesid

Como trocar o Schema dos objetos no SQL Server 2005

Quando um banco de dados é restaurado em um novo servidor e os usuários/logins originais não existem no servidor, podemos trocar o dono dos objetos com o seguinte procedimento:

SELECT 'ALTER SCHEMA DBO TRANSFER donoantigo.' + NAME + ';'
FROM SYSOBJECTS
WHERE UID= xx;

Execute a instrução no Query Analyzer e copie o resultado para uma nova janela da ferramenta, após a execução todos os objetos do uid = xx serão transferidos para o dbo.

PS: Para descobrir o uid que deve ser utilizado, basta consultar na tabela sysobjects o uid de um objeto que desejes trocar o dono:

SELECT * FROM SYSOBJECTS
WHERE NAME='nomeobjeto'

Novos Níveis de Isolamento de Transações no SQL Server

A partir do SQL Server 2005 a Microsoft disponibilizou no seu servidor de banco de dados novos níveis de isolamento utilizando o versionamento de registros.
Para disponibilizar estes novos níveis é necessário alterar a configuração padrão do banco de dados através das seguintes instruções SQL:
  • Para habilitar o novo tipo de isolamento Snapshot:
ALTER DATABASE nomebanco
SET ALLOW_SNAPSHOT_ISOLATION ON;

  • Para que o nível de isolamento Read Commited use versionamento de registro:
ALTER DATABASE nomebanco
SET READ_COMMITED_SNAPSHOT ON;


Estes níveis de isolamento evitam bloqueios que eram comuns nas versões anteriores do SQL Server.

sábado, 19 de janeiro de 2008

Carregar o Oracle com um Datafile Corrompido

Para carregar o Oracle se um Datafile estiver corrompido.

STARTUP MOUNT;
ALTER DATABASE DATAFILE '/u01/oradata/ORCL/EXEMPLO.dbf' OFFLINE FOR DROP;
ALTER DATABASE OPEN;

Depois será necessário remover a tablespace (EXEMPLO) e recriar.

Trocar o Character Set do Oracle de US7ASCII para WEISO8859P1

Para trocar a tabela de caracteres utilizada pelo Oracle execute as seguintes instruções após uma boa cópia de segurança:

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET WE8ISO8859P1;
SHUTDOWN IMMEDIATE;
STARTUP;


Neste exemplo a tabela de caracteres ficará comWEISO8859P1.

Conexão com o Firebird em Terminal Server

Quando conectamos o Firebird no próprio servidor do banco de dados não precisamos especificar o nome do servidor.
Entretanto quando é conectado a partir de um servidor Windows utilizando o terminal services somente irá funcionar especificando servidor:caminho\arquivo.FDB

domingo, 23 de setembro de 2007

Exclusão de registros filhos

Estes dias me solicitaram para criar uma trigger para excluir os registros filhos de uma tabela, como os itens da nota, sempre que o registro principal fosse excluído.
Expliquei o procedimento para a pessoa, mas aproveitei para comentar que ela poderia ter o mesmo resultado usando o recurso DELETE CASCADE, presente nas versões mais atuais dos bancos de dados.
Abaixo coloquei um exemplo da declaração de duas tabelas: pedido e os itens do pedido.
Sempre que o pedido for excluído, todos os itens do pedido serão excluídos automaticamente.

Create Table Pedido
(CodPedido Int not null primary key,
DataPedido DateTime,
Cliente Varchar(40));

Create Table ItemPedido
(CodPedido int not null,
CodItem int not null,
Qtdade decimal(9,2),
Valor decimal(9,2)
Constraint pk_ItemPedido Primary key (CodPedido, CodItem)
Constraint fk_ItemPedido_01 Foreign key (CodPedido)
References Pedido(CodPedido)
ON DELETE CASCADE)