Para permitir que o TOTVS Folha de Pagamento aceite valor até 999:59 no campo hora, foi necessário criar script de banco de dados para alterar o tipo do campo para int. Caso o cliente possua índice (SQL e Oracle) ou estatísticas (SQL) vinculado ao campo hora nas tabelas relacionadas abaixo, poderá retornar erro ao atualizar a base e a mesma ser travada. Neste caso recomendamos que seja feito a atualização antes em uma base de homologação e caso ocorra erros referente a marcação LB.2022.08_07, orientamos que os índices (SQL e Oracle) ou estatísticas (SQL) sejam excluídos antes da atualização da base de dados. Após o processo de atualização ser concluído o com sucesso, é necessário avaliar com o DBA da sua empresa a necessidade de recriar os índices novamente, pois os mesmos podem impactar na performance. lembrando Lembrando que os clientes possuem autonomia para fazer otimizações para o uso do banco de dados. No caso das tabelas abaixo, por padrão o produto não tem os índices para os campos relacionados. Expandir |
---|
| - PEVTRELACSALCMP campo:NHORAS
- PEVTRELACSALCMPCC campo:NHORAS
- PFENTMOV campo: HORA
- PFFINANC campo: HORA
- PFFINANCCOMPL campo: HORA
- PFHSTENTMOV campo: HORA
- PFMOVCC campo: HORA
- PFMOVCCCOMPL campo: HORA
- PFRESILICAOMOV campo: HORA
- PFVALORFORCADO campo: HORA
- PFVERBAS campo: HORA
- PFVERBASCOMPL campo: HORA
- PFVERBASDIS campo: HORA
- PFVERBASDISFER campo: HORA
- PFVERBASDISFERHIST campo: HORA
- PFVERBASDISHIST campo: HORA
- PORCAMENTOPERFILEVENTOS campo: HORA
- PFMOVTOMADOR campo: HORA
- PFRESILICAOMOVBASE campo: HORA
- PORCAMENTOMOVVALOR campo: HORA
- PPOSTRANSFERENCIA campo: HORA
- PSIMULADEMISSAOEVENTOS campo: HORA
- PFSUBSTITUICAO campo: NROHORAS
- PFSUBSTITUICAO campo: NROHORASORIGINAL
|
Foi incluída uma validação onde o atualizador não permitirá a atualização caso existem índices índice (SQL e Oracle) ou estatísticas (SQL). Caso seja reportado o erro desta situação, pode ser verificado no banco a lista de tabelas e colunas dos índices índice (SQL e Oracle) ou estatísticas (SQL) existentes com as consultas abaixo: Expandir |
---|
| Expandir |
---|
| Bloco de código |
---|
language | sql |
---|
title | Verificar índices |
---|
| SELECT TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM USER_IND_COLUMNS
WHERE
( ( TABLE_NAME = 'PEVTRELACSALCMP' AND COLUMN_NAME = 'NHORAS' )
OR ( TABLE_NAME = 'PEVTRELACSALCMPCC' AND COLUMN_NAME = 'NHORAS' )
OR ( TABLE_NAME = 'PFENTMOV' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFFINANC' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFFINANCCOMPL' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFHSTENTMOV' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFMOVCC' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFMOVCCCOMPL' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFRESILICAOMOV' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVALORFORCADO' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBAS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASCOMPL' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDIS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDISFER' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDISFERHIST' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFVERBASDISHIST' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PORCAMENTOPERFILEVENTOS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFMOVTOMADOR' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFRESILICAOMOVBASE' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PORCAMENTOMOVVALOR' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PPOSTRANSFERENCIA' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PSIMULADEMISSAOEVENTOS' AND COLUMN_NAME = 'HORA' )
OR ( TABLE_NAME = 'PFSUBSTITUICAO' AND COLUMN_NAME = 'NROHORAS' )
OR ( TABLE_NAME = 'PFSUBSTITUICAO' AND COLUMN_NAME = 'NROHORASORIGINAL' )
) |
|
Expandir |
---|
| Bloco de código |
---|
language | sql |
---|
title | Verificar índices |
---|
| select tabela, type_desc, indice, colunasIndice
from
(
SELECT s.name as [schema], t.name as [tabela]
-- Detalhes do | ÃndiceIndice
, i.[type_desc], i.[is_primary_key], i.[is_unique], i.[is_unique_constraint]
, ISNULL(i.name, '') AS [indice]
, ISNULL(SUBSTRING(c.[indexed], 0, LEN(c.[indexed])), '') AS [colunasIndice]
| , ISNULL(SUBSTRING(c.[included], 0, LEN(c.[included])), '') AS [included]
ÃndiceIndice
, ISNULL(i.filter_definition, '') AS [filtered]
FROM sys.schemas s
INNER JOIN sys.tables t
ON s.[schema_id] = t.[schema_id]
INNER JOIN sys.indexes i
ON t.[object_id] = i.[object_id]
-- | RelaçãoRelacao de colunas que formam o | Ãndice INNER JOIN sys.index_columns ic
| ON c.[object_id] = ic.[object_id]
| AND c.[column_id] = ic.[column_id]
| WHERE t.[object_id] = c.[object_id]
| AND ic.[index_id] = i.[index_id]
ORDER BY [key_ordinal]
FOR XML PATH('')
) AS [indexed]
) | AND ic.[is_included_column] = 0
ORDER BY [key_ordinal]
FOR XML PATH('')
) AS [indexed]
,(
SELECT c.name + ', '
FROM sys.columns c
INNER JOIN sys.index_columns ic
ON c.[object_id] = ic.[object_id]
AND c.[column_id] = ic.[column_id]
WHERE t.[object_id] = c.[object_id]
AND ic.[index_id] = i.[index_id]
AND ic.[is_included_column] = 1
ORDER BY [key_ordinal]
FOR XML PATH('')
) AS [included]
) AS c
) AS D
WHERE
( ( D.tabela = 'PEVTRELACSALCMPAS c
) AS D
WHERE
( ( D.tabela = 'PEVTRELACSALCMP' AND D.colunasIndice LIKE '%NHORAS%')
OR ( D.tabela = 'PEVTRELACSALCMPCC' AND D.colunasIndice LIKE '%NHORAS%')
OR ( D.tabela = 'PFENTMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFFINANC' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFFINANCCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFHSTENTMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVCC' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVCCCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFRESILICAOMOV' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVALORFORCADO' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBAS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASCOMPL' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDIS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISFER' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISFERHIST' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFVERBASDISHIST' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PORCAMENTOPERFILEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFMOVTOMADOR' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFRESILICAOMOVBASE' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PORCAMENTOMOVVALOR' AND D.colunasIndice LIKE ' | %NHORAS%%HORA%')
OR ( D.tabela = ' | PEVTRELACSALCMPCCPPOSTRANSFERENCIA' AND D.colunasIndice LIKE ' | %NHORAS%%HORA%')
OR ( D.tabela = ' | PFENTMOVPSIMULADEMISSAOEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = ' | PFFINANCPFSUBSTITUICAO' AND D.colunasIndice LIKE ' | %HORA%%NROHORAS%')
OR ( D.tabela = ' | PFFINANCCOMPLPFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORASORIGINAL%')
) |
|
|
Expandir |
---|
| Expandir |
---|
| Bloco de código |
---|
language | sql |
---|
title | Verificar estatísticas |
---|
| SELECT s.name [STATS_NAME], s.stats_id [STATS_ID], t.name [TABLE_NAME], c.name [COLUNM_NAME]
FROM sys.stats s
INNER JOIN sys.tables t ON s.object_id = t.object_id
INNER JOIN sys.stats_columns sc ON s.object_id = sc.object_id AND s.stats_id = sc.stats_id
INNER JOIN sys.columns c ON sc.object_id = c.object_id AND sc.column_id = c.column_id
WHERE
( object_name(c.object_id) = 'PFFINANCCOMPL' AND c.name LIKE '%HORA%')
OR ( | D.tabela object_name(c.object_id) = 'PFHSTENTMOV' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFMOVCC' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PFMOVCCCOMPL' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFRESILICAOMOV' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFVALORFORCADO' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PFVERBAS' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PFVERBASCOMPL' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFVERBASDIS' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFVERBASDISFER' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PFVERBASDISFERHIST' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFVERBASDISHIST' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PORCAMENTOPERFILEVENTOS' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFMOVTOMADOR' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PFRESILICAOMOVBASE' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PORCAMENTOMOVVALOR' AND | DcolunasIndiceD.tabelaobject_name(c.object_id) = 'PPOSTRANSFERENCIA' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PSIMULADEMISSAOEVENTOS' AND | DcolunasIndiceD.tabela object_name(c.object_id) = 'PFSUBSTITUICAO' AND | DcolunasIndicename LIKE '%NROHORAS%')
OR ( | D.tabela object_name(c.object_id) = 'PFSUBSTITUICAO' AND | DcolunasIndicename LIKE '%NROHORASORIGINAL%' | )
|
|
|