Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Aviso
titleATENÇÃO

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 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
titleTabelas:
  • 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 í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 índice (SQL e Oracle) ou estatísticas (SQL) existentes com as consultas abaixo:

Expandir
titleÍndices
Expandir
titleORACLE
Bloco de código
languagesql
titleVerificar í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
titleSQL
Bloco de código
languagesql
titleVerificar í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] 
-- Filtro utilizado pelo índiceI­ndice
, 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 índiceI­ndice
CROSS APPLY (
    SELECT (
        	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] = 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 [includedindexed] 
) AS 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 '%HORA%')
OR ( D.tabela = 'PPOSTRANSFERENCIA' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PSIMULADEMISSAOEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = 'PFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORAS%')
OR ( D.tabela = 'PFSUBSTITUICAO' AND D.colunasIndice LIKE '%NROHORASORIGINAL%')
)
Expandir
titleEstatísticas
Expandir
titleSQL
Bloco de código
languagesql
titleVerificar 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 (  object_name(c.object_id)  = 'PFHSTENTMOV' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFMOVCC' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFMOVCCCOMPL' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFRESILICAOMOV' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVALORFORCADO' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBAS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASCOMPL' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDIS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDISFER' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDISFERHIST' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFVERBASDISHIST' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PORCAMENTOPERFILEVENTOS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFMOVTOMADOR' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFRESILICAOMOVBASE' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PORCAMENTOMOVVALOR' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PPOSTRANSFERENCIA' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PSIMULADEMISSAOEVENTOS' AND c.name LIKE '%HORA%')
OR (  object_name(c.object_id)  = 'PFSUBSTITUICAO' AND c.name LIKE '%NROHORAS%')
OR (  object_name(c.object_id)  = 'PFSUBSTITUICAO' AND c.name LIKE '%NROHORASORIGINAL%')




...