Histórico da Página
...
Iniciamos os procedimentos de pré-migração / e alteração do Schema, pois uma vez que alguns objetos precisam precisam ser ajustados ajustados;
Será necessário realizar ajustes na View EVENTO_EMBALAGEM. Para isso, precisaremos recriá-la, utilizando o comando abaixo. A alteração consiste na remoção da instrução WITH SCHEMABINDING, pois ela impede a modificação do schema padrão desse objeto. Essa restrição impacta diretamente na mudança de outras entidades que estão vinculadas a essa View.
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
USE [TOTVS | ||||
| Bloco de código | ||||
| ||||
--- SELECT o.name AS Object_Name, o.type_desc FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = 'ssma_oracle' -- Replace with your schema name ORDER BY o.type_desc, s.name, o.name -- ### Passos antes de mudar de schema -- Corrigir a view EVENTO_EMBALAGEM e retirar o "WITH NO SCHEMABINDING" do código CREATE VIEW EVENTO_EMBALAGEM WITH SCHEMABINDING AS -- Retirar a referencia da sequence na tabela APABASTEC_TMP SELECT c.name, c.definition FROM sys.default_constraints c JOIN sys.objects o ON o.object_id = c.parent_object_id WHERE o.name = 'APABASTEC_TMP'; BEGIN TRANSACTION SET QUOTED_IDENTIFIER ON SET ARITHABORT ON SET NUMERIC_ROUNDABORT OFF SET CONCAT_NULL_YIELDS_NULL ON SET ANSI_NULLS ON SET ANSI_PADDING ON SET ANSI_WARNINGS ON COMMIT BEGIN TRANSACTION GO ALTER TABLE dbo.APABASTEC_TMP DROP CONSTRAINT DF_APABASTEC_TMP_CD_APABASTEC_TMP; GO ALTER TABLE dbo.APABASTEC_TMP SET (LOCK_ESCALATION = TABLE) GO COMMIT -- Depois que mudar o schema, voltar a sequencia para tabela ALTER TABLE [MULTICULTIVO].[APABASTEC_TMP] ADD CONSTRAINT [DF_APABASTEC_TMP_CD_APABASTEC_TMP] DEFAULT (NEXT VALUE FOR [MULTICULTIVO].[SEQ_CD_APABASTEC_TMP]) FOR [CD_APABASTEC_TMP] GO --Colocar este código na coluna CD_APABASTEC_TMP na tabela APABASTEC_TMP (NEXT VALUE FOR dbo.SEQ_CD_APABASTEC_TMP) ------------------------------------------------------ USE [PIMSMC_CLAIDES_PROD_POCDEV] GO DROP VIEW [dbo].[EVENTO_EMBALAGEM] GO /****** Object: View [dbo].[EVENTO_EMBALAGEM] Script Date: 10/03/2025 14:16:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[EVENTO_EMBALAGEM] AS SELECT EM.ID_UNIDADEADM, EVT.ID_APEMBALAGEM,EVT.DT_EVENTO, EM.ID_INSUMO, EVT.ID_EVENTO_EMB, INS.ID_GRPINSUMO, INS.ID_PRINCATIVO, EVT.ID_PERIODOSAFRA, PS.ID_SAFRA, EQ.ID_EQUIPE, EQ.CD_EQUIPE, APOS.ID_APORDSERVICO, CC.ID_CCUSTO, OP.ID_OPERACAO, EVT.ID_APEMBALAGEM_EVT FROM dbo.APEMBALAGEM_EVT EVT JOIN dbo.APEMBALAGEM EM ON (EVT.ID_APEMBALAGEM = EM.ID_APEMBALAGEM) JOIN dbo.EVENTO_EMB EVTEMB ON (EVT.ID_EVENTO_EMB = EVTEMB.ID_EVENTO_EMB) JOIN dbo.INSUMO INS ON (EM.ID_INSUMO = INS.ID_INSUMO) JOIN dbo.GRPINSUMO GRP ON (INS.ID_GRPINSUMO = GRP.ID_GRPINSUMO) LEFT JOIN dbo.PRINCATIVO PATIV ON (INS.ID_PRINCATIVO = PATIV.ID_PRINCATIVO) LEFT JOIN ( SELECT DISTINCT D.ID_PERIODOSAFRA, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D JOIN (SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO FROM dbo.APEMBALAGEM_EVT D1 WHERE D1.ID_PERIODOSAFRA IS NOT NULL GROUP BY D1.ID_APEMBALAGEM ) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO) ) EVT_PERIODOSAFRA ON (EVT_PERIODOSAFRA.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM) LEFT JOIN dbo.PERIODOSAFRA PS ON (EVT_PERIODOSAFRA.ID_PERIODOSAFRA= PS.ID_PERIODOSAFRA) LEFT JOIN dbo.SAFRA S ON (PS.ID_SAFRA = S.ID_SAFRA) LEFT JOIN ( SELECT DISTINCT D.ID_APORDSERVICO, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D JOIN (SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO FROM dbo.APEMBALAGEM_EVT D1 WHERE D1.ID_APORDSERVICO IS NOT NULL GROUP BY D1.ID_APEMBALAGEM ) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO) ) EVT_APOS ON (EVT_APOS.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM) LEFT JOIN dbo.APORDSERVICO APOS ON (EVT_APOS.ID_APORDSERVICO= APOS.ID_APORDSERVICO) LEFT JOIN ( SELECT DISTINCT D.ID_CCUSTO, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D JOIN (SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO FROM dbo.APEMBALAGEM_EVT D1 WHERE D1.ID_CCUSTO IS NOT NULL GROUP BY D1.ID_APEMBALAGEM ) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO) ) EVT_CCUSTO ON (EVT_CCUSTO.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM) LEFT JOIN dbo.CCUSTO CC ON (ISNULL(EVT_CCUSTO.ID_CCUSTO, APOS.ID_CCUSTO) = CC.ID_CCUSTO) LEFT JOIN ( SELECT DISTINCT D.ID_OPERACAO, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D JOIN (SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO FROM dbo.APEMBALAGEM_EVT D1 WHERE D1.ID_OPERACAO IS NOT NULL GROUP BY D1.ID_APEMBALAGEM ) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO) ) EVT_OPERACAO ON (EVT_OPERACAO.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM) LEFT JOIN dbo.OPERACAO OP ON (ISNULL(EVT_OPERACAO.ID_OPERACAO, APOS.ID_OPERACAO) = OP.ID_OPERACAO) LEFT JOIN ( SELECT DISTINCT D.ID_EQUIPE, D.ID_APEMBALAGEM FROM dbo.APEMBALAGEM_EVT D JOIN (SELECT D1.ID_APEMBALAGEM, MAX(D1.DT_EVENTO) DT_EVENTO FROM dbo.APEMBALAGEM_EVT D1 WHERE D1.ID_EQUIPE IS NOT NULL GROUP BY D1.ID_APEMBALAGEM ) D1 ON (D.ID_APEMBALAGEM = D1.ID_APEMBALAGEM AND D.DT_EVENTO = D1.DT_EVENTO) ) EQ_EVT ON (EQ_EVT.ID_APEMBALAGEM = EVT.ID_APEMBALAGEM) LEFT JOIN dbo.EQUIPE EQ ON (EQ.ID_EQUIPE= ISNULL(EQ_EVT.ID_EQUIPE,APOS.ID_EQUIPE) ) ----------------------------------------------------------------------------- SELECT schema_name(o.schema_id) dono_objeto, o.name AS view_name, m.definition AS view_definition, o.type_desc tipo_objeto FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE upper(m.definition) LIKE '%DBO%' order by schema_name(o.schema_id), o.type_desc, o.name DECLARE @sql NVARCHAR(MAX) DECLARE @obj_name NVARCHAR(255) DECLARE @obj_type NVARCHAR(2) -- Cursor para iterar sobre todos os objetos que possuem "dbo." DECLARE cur CURSOR FOR SELECT o.name, o.type FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE upper(m.definition) LIKE '%DBO%' -- Procurando o prefixo dbo. AND o.type IN ('P', 'V', 'FN', 'TR') -- Types: P = Stored Procedures, V = Views, FN = Functions, TR = Triggers AND schema_name(o.schema_id) = 'MULTICULTIVO' order by schema_name(o.schema_id), o.type_desc, o.name; OPEN cur FETCH NEXT FROM cur INTO @obj_name, @obj_type WHILE @@FETCH_STATUS = 0 BEGIN -- Gerar o script de alteração SET @sql = 'ALTER ' + CASE WHEN @obj_type = 'P' THEN 'PROCEDURE ' WHEN @obj_type = 'V' THEN 'VIEW ' WHEN @obj_type = 'FN' THEN 'FUNCTION ' WHEN @obj_type = 'TR' THEN 'TRIGGER ' END + @obj_name + ' AS ' -- Substitui "dbo." por nada no código do objeto SET @sql = @sql + REPLACE((SELECT definition FROM sys.sql_modules WHERE object_id = OBJECT_ID(@obj_name)), 'dbo.', '') -- Comando executado print 'Comando: '+@sql+ ' Tipo objeto:> ' + @obj_type -- Executa o script de atualização EXEC sp_executesql @sql FETCH NEXT FROM cur INTO @obj_name, @obj_type END CLOSE cur DEALLOCATE cur | ||||
| Bloco de código | ||||
| ||||
DECLARE @name NVARCHAR(256) DECLARE @typedesc NVARCHAR(256) DECLARE @sql NVARCHAR(MAX) -- Cursor para selecionar todos os objetos do banco de dados DECLARE object_cursor CURSOR FOR SELECT d.name, d.type_desc FROM sys.objects d WHERE d.type IN ('U', 'V', 'P', 'FN', 'IF', 'TF','SO') order by d.type_desc, d.name /* U: Tabelas V: Views P: Procedures FN: Funções escalares IF: Funções de tabela inline TF: Funções de tabela SO: Sequencias */ OPEN object_cursor FETCH NEXT FROM object_cursor INTO @name, @typedesc WHILE @@FETCH_STATUS = 0 BEGIN -- Monta o comando ALTER SCHEMA SET @sql = 'ALTER SCHEMA MULTICULTIVO TRANSFER dbo.' + QUOTENAME(@name) -- Mostra o comando print 'Instrucao: '+@sql+' Tipo objeto: '+ @typedesc -- Executa o comando EXEC sp_executesql @sql FETCH NEXT FROM object_cursor INTO @name, @typedesc END CLOSE object_cursor DEALLOCATE object_cursorGO; |
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas