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 í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
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 
índice
Indice
, 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 
índice
I­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ção
Relacao de colunas que formam o 
índice
I­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]
	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 = 'PEVTRELACSALCMP
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 '
%NHORAS%
%HORA%')
OR ( D.tabela = '
PEVTRELACSALCMPCC
PPOSTRANSFERENCIA' AND D.colunasIndice LIKE '
%NHORAS%
%HORA%')
OR ( D.tabela = '
PFENTMOV
PSIMULADEMISSAOEVENTOS' AND D.colunasIndice LIKE '%HORA%')
OR ( D.tabela = '
PFFINANC
PFSUBSTITUICAO' AND D.colunasIndice LIKE '
%HORA%
%NROHORAS%')
OR ( D.tabela = '
PFFINANCCOMPL
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 ( 
D.tabela
 object_name(c.object_id)  = 'PFHSTENTMOV' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFMOVCC' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR (  
D.tabela
object_name(c.object_id)  = 'PFMOVCCCOMPL' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFRESILICAOMOV' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFVALORFORCADO' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFVERBAS' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFVERBASCOMPL' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR (  
D.tabela
object_name(c.object_id)  = 'PFVERBASDIS' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFVERBASDISFER' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR (  
D.tabela
object_name(c.object_id)  = 'PFVERBASDISFERHIST' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFVERBASDISHIST' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR (  
D.tabela
object_name(c.object_id)  = 'PORCAMENTOPERFILEVENTOS' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFMOVTOMADOR' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFRESILICAOMOVBASE' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PORCAMENTOMOVVALOR' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PPOSTRANSFERENCIA' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR (  
D.tabela
object_name(c.object_id)  = 'PSIMULADEMISSAOEVENTOS' AND 
D
c.
colunasIndice
name LIKE '%HORA%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFSUBSTITUICAO' AND 
D
c.
colunasIndice
name LIKE '%NROHORAS%')
OR ( 
D.tabela
 object_name(c.object_id)  = 'PFSUBSTITUICAO' AND 
D
c.
colunasIndice
name LIKE '%NROHORASORIGINAL%'
)
)