Translate

Mostrando postagens com marcador Restore. Mostrar todas as postagens
Mostrando postagens com marcador Restore. Mostrar todas as postagens

domingo, 3 de agosto de 2025

XKTools - 6 - Restore bacpac.

 A opção 6 do XKTools é simples.

Selecione-a no menu inicial, escolha o arquivo .bacpac, modificado ou não, e clique em "open":


Digite o nome do banco de dados a ser restaurado, deixei desta forma para permitir que você faça este restore em paralelo para casos onde você precise manter o AxDB atual e este novo banco!

Ao confirmar o inicio do restore o "sqlpackage" baixado anteriormente será acionado e o processo de restore será iniciado. Agora basta aguardar!


https://fsilvajunior.blogspot.com/2025/08/xktools-minha-ferramenta.html






XKTools - 4 - CleanBacpac

 Após fazer download do bacpac vamos limpar ele antes mesmo de iniciar o restore. Este processo é de extrema utilidade no caso de bancos de dados com tabelas de log grandes demais. Ao remover tabelas não necessárias para uso em uma VM de DEV, o processo de restore ficará muito mais rápido!

Escolha a opção 4 e aperte ENTER, aguarde alguns segundos.


Note que a opção 3 está com uma cor diferente, isso é apenas para sinalizar que ela já foi executada. Note também que por ser necessário o D365fo.tools o powershell já fez o download e importação do modulo, por isso houve uma certa demora na exibição da janela.

Com a janela aberta, busque por seu arquivo .bacpac a ser limpo e clique "open".

No próximo passo lhe será solicitado o arquivo com os nomes das tabelas a serem removidas de dentro do bacpac. Na pasta C:\Temp\XKtools você verá o arquivo de nome "RemoveTables.txt". Adicione neste txt as tabelas que você quer remover, cada tabela deve ser informada em uma linha diferente. Após salver o .txt com as tabelas corretas, selecione o txt e clique em "open".

Agora selecione a pasta onde o "arquivo limpo" será salvo e clique em "ok".

O arquivo .bacpac foi limpo e salvo no diretório escolhido.

Note que o arquivo original e o arquivo modificado possuem tamanhos diferentes:

Tudo ok para voltar ao menu inicial e seguir como restore do .bacpac modificado!

https://fsilvajunior.blogspot.com/2025/08/xktools-minha-ferramenta.html








XKTools - "Minha" "ferramenta"!

Juntei scripts uteis nas tarefas administrativas de ambientes do F&O em um conjunto que chamei de XKTools. São comandos de powershell simples. Utilizei o ChatGPT para otimizar alguns, criar outros e juntar tudo no que chamei de XKTools.

Como sempre, vou documentar o uso do XKTools aqui para meu futuro uso, caso isso ajude mais alguém ótimo!

Em um servidor de F&O abra um Powershell e execute o comando abaixo para efetuar o download dos arquivos que estão no meu Git: 

iwr -useb  https://raw.githubusercontent.com/fsilva-jr/XKtools/main/DownloadXKTools.ps1 | iex

O download será iniciado, na sequência o arquivo será descompactado e a pasta XKTools será criada dentro da pasta C:\temp. Uma nova janela do Powershell será aberta, este é o menu inicial!


Logo ao abrir o Menu, você poderá optar por atualizar Powershell. Se escolher atualizar você será direcionado para a pagina de download, siga o processo de atualização normal. Se escolher não atualizar, as opções do menu serão exibidas:


Algumas das opções são simples, como as opções 1 e 7. Outras são mais especificas, como as opções 3, 4 e 12.

Tentei deixar cada uma delas fácil de usar, mas vou criar novos posts para cada uma das opções que exigem mais informações por parte de quem vai usar a XKTools.

Deixo abaixo uma breve descrição para as opções mais simples e o link para a explicação detalhada de opções que exigem mais interação por parte de quem vai usar a XKTools:

1 - Apenas para todos os serviços relacionados ao F&O

2 - Faz o donwload das versões mais atuais do Azcopy e do SQLPackage, descompacta e salva no C:\Temp

3 - https://fsilvajunior.blogspot.com/2025/08/xktools-3-download-bacpac-from-lcs.html

4 - https://fsilvajunior.blogspot.com/2025/08/xktools-4-cleanbacpac.html

5 - Após parar todos os serviços, use esta opção para renomear o AxDB!

6 - https://fsilvajunior.blogspot.com/2025/08/xktools-6-restore-bacpac.html

7 - Após restaurar o novo AxDB, ou quando quiser, use esta opção para iniciar os serviços do F&O.

8 - Execute um Build de todas as models.

9 - Executa a sincronização do banco de dados.

10 - Faz o deploy dos reports. Há a opção de fazer o deploy de apenas 01 report ou de todos eles.

11 - Executa uma Store Procedure que faz o Reindex do AxDB.

12 - https://fsilvajunior.blogspot.com/2025/08/xktools-12-update-web-e-wif-config.html

13 - Faz o download e instala o Notepad++ e o Postman.







segunda-feira, 21 de outubro de 2024

Restaurar AxDB de uma VM para um ambiente Tier 2(PréProd ou Prod).

 É comum que antes de um D365F&O entrar em produção você precise pegar um banco de dados de um ambiente Tier 1, seja ele uma VM no Azure ou hospedada em seu servidor local.

Muitos testes e parametrizações são feitas na fase inicial, quando tudo está pronto para entrar em produção, esta movimentação é necessária.

Neste tutorial vamos preparar uma base de dados hospedada em minha VM de desenvolvimento e fazer o upload dela para o LCS.

Com o arquivo de backup disponivel no LCS, poderemos restaurar ela em um ambiente Tier 2 e consequentemente executar a restauração para o ambiente de produção!

Já existem diversos tutoriais na internet que tratam deste assunto. Registro este processo aqui simplesmente pelo fato de sempre ter funcionado em minhas atividades e para me servir de consulta em trabalhos futuros!

O primeiro passo para este processo é executar o backup de seu banco de dados em sua VM, depois você deve restaurar este backup também em seu SQL Server. 

Obs: Se você não souber fazer um backup/restore em seu SQL Server, larga tudo e me liga!!!

Ao final deste processo você terá 02 bancos de dados disponiveis, algo mais ou menos assim:


Detalhes importantes:

  • Nenhuma informação gravada de forma criptografada será migrada, é obrigatório recriar estas informações após a movimentação.
  • A collation do banco de dados DEVE ser a seguinte: SQL_Latin1_General_CP1_CI_AS

Agora precisamos "preparar" o banco de dados. Devemos executar o script abaixo, este script executará as alterações necessárias para que o banco de dados possa ser utilizado na nova estrutura de servidores onde ele ficará armazenado. Mais detalhes sobre as alterações você encontrará no final deste tutorial!

Script:

update sysglobalconfiguration

set value = 'SQLAZURE'

where name = 'BACKENDDB'

update sysglobalconfiguration

set value = 1

where name = 'TEMPTABLEINAXDB'

drop procedure XU_DisableEnableNonClusteredIndexes

drop procedure if exists SP_ConfigureTablesForChangeTracking

drop procedure if exists SP_ConfigureTablesForChangeTracking_V2

drop schema [NT AUTHORITY\NETWORK SERVICE]

drop user [NT AUTHORITY\NETWORK SERVICE]

drop user axdbadmin

drop user axdeployuser

drop user axmrruntimeuser

drop user axretaildatasyncuser

drop user axretailruntimeuser

drop user axdeployextuser

-- Clear encrypted hardware profile merchand properties

update dbo.RETAILHARDWAREPROFILE set SECUREMERCHANTPROPERTIES = null where SECUREMERCHANTPROPERTIES is not null

Depois de ter executado o script contra a base de dados correta, vamos exporta-la no formato .bacpac.

Eu tenho o costume de SEMPRE baixar o SQLPackage, já tive problemas com versões desatualizadas!

https://aka.ms/sqlpackage-windows

Obs2: Se não sabe, me liga!

Obs3: o D365fo.tool também pode ser utilizado neste caso!

SqlPackage.exe /a:export /ssn:localhost /sdn:AxDBToLCS /tf:c:\temp\AXDBToLCS.bacpac /p:CommandTimeout=4200 /p:VerifyFullTextDocumentTypesSupported=false /SourceTrustServerCertificate:True

Agora que temos o arquivo .bacpac de nosso banco de dados preparado após execução do script, é só fazer o upload dele para o LCS Assets.


Acesse seu LCS Asset Library, clique no sinal de + selecione as opções conforme o print abaixo e clique em "Add a File".
Selecione seu arquivo .bacpac e clique em Upload:
Aguarde o upload do arquivo e depois clique no botão "Confirm". Seu arquivo em breve estará disponivel no Assets do LCS!

Dica: Eu sempre uso uma VM no Azure, o upload é sempre mais rápido!


No LCS, escolha o ambiente Tier 2 a receber o backup, clique em "Mantain > Move Database".

Agora escolha a opção "Import Database":
Selecione o arquivo salvo no passo anterior, marque a caixa de seleção e clique em "Submit".

sábado, 19 de outubro de 2024

BACPAC restore, dicas para melhorar a performance.

 É comum termos problemas com o tempo necessário para que um arquivo do tipo .bacpac seja restaurado independente de ser uma VM em seu PC ou Laptop ou em uma VM hospedada no Azure (CHE).

As ferramentas disponiveis para trabahar com o bacpac são as seguintes: SQLPackage e D365fo.tools

Ambas as ferramentas possuem variáveis para ajudar nesta tarefa de acelerar o tempo necessário para o restore...

Utilizar disco SSD durante o restore obviamente ajuda a melhorar o tempo de restore se comparado a um disco do tipo HDD. Não creio que você utilize disco do tipo HDD em seu PC ou Laptop hoje em dia, se este for o seu caso, você não tem salvação amigo... vai comprar um SSD pelamor!!!

Em VM´s no Azure, estratégias de gerenciamento de disco podem lhe ajudar a melhorar a performance de toda a VM. Após a criação da VM, com poucas mudança, você pode ter a flexibilidade de alterar o disco onde os arquivos do banco de dados ficam armazenados. Desta forma será possível conrverte-los entre SSD e HDD de acordo com a necessidade!

Tendo o hardware adequado você verá uma melhora no tempo de restore do bacpac com certeza!

Utilizando o SQLPackage, temos alguns comandos que podem ajudar nesta situação. um deles é o RebuildIndexesOfflineForDataPhase=True. Com este comando o rebuild dos indices acontece de forma offline. Sugiro obviamente que você faça seus testes! O ganho de tempo com este comando é visivel e significativo.

Outro comando usando o SQLPackage é o DisableIndexesForDataPhase=FALSE. Durante o restore notamos que o "disable index" é executado, logo após o bacpac começa a trabalhar com as tabelas e ao final os indices são habilitados novamente. Usando o comando DisableIndexesForDataPhase=FALSE a importação acontece sem o "disable" e o "enable" dos indices. Basicamente com este comando os indices não são recriados. As tabelas continuam com os indices, eles apenas não serão atualizados! Em meu teste o tempo de restore do bacpac caiu pela metade! Reforço que você DEVE fazer seus próprios testes e analisar o resultado com cuidado!

Outra alternativa é a opção "Delayed Durability". Esta opção está disponivel apenas quando o banco de dados já existe:


O Delayed Durability altera a forma como o SQL utiliza o arquivo de log, diminuindo a escrita em disco e com isso diminuido o I/O. Cuidado com esta opção pois ela pode causar falhas nos dados, se por qualquer razão o Windows se reiniciar durante o processo, você terá que reiniciar o restore.
Como esta opção somente fica disponivel para um banco que já existe, eu inicio o comando de restore e fico atendo ao momento em que o SQLPackge cria o banco no SQL Server, logo após a criação do banco de dados eu executo a seguinte query no SQL:

USE [master]
GO
ALTER DATABASE [DBName] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [DBName] SET DELAYED_DURABILITY = FORCED WITH NO_WAIT
GO


Existem outros comandos para o SQLPackage, veja mais deles neste link: SQL Pacakge

O D365fo.tools tem outros comandos que nos ajudam a melhorar o tempo de restore, um deles é o "Clear-D365TableDataFromBacpac". Com este comando você pode remover tabelas "indesejadas" antes de iniciar o restore caso você não tenha feito isso antes de exportar o arquivo .bacpac pelo LCS. Exemplo de uso deste comando: Clear-D365TableDataFromBacpac -Path "C:\Temp\preprod.bacpac" -TableName "*Staging*","BatchHistory","SYSDATABASELOG*", -ClearFromSource

Desta forma o bacpac a ser importado não terá estas tabelas, isso vai acelerar um pouco mais o processo!

Com as dicas acima o tempo de restore com certeza será menor!

Utilize as dicas acima por sua conta e risco, todos juntos ou um a um, faça seus próprios testes e analise os resultados em sua VM.

Boa sorte!

terça-feira, 12 de março de 2024

The Element or Annotation class SqlStatistic does not contain the Property class AutoDrop

 Encontrei este erro recentemente ao importar um arquivo .bacpac no SQL de uma VM tier 1 do D365F&O:


A solução deste problema é bem simples, basta baixar a ultima versão disponivel do SqlPackage:

Download and install SqlPackage - SQL Server | Microsoft Learn

No dia de hoje a versão é: sqlpackage-win-x64-en-162.2.111.2

Até a próxima!

quinta-feira, 13 de junho de 2019

Restore não exibe porcentagem de progresso.

Este post é apenas para armazenar o conhecimento adquirido para casos futuros...!!!:

Fui incumbido de efetuar o restore de um banco de dados de 1.5TB em um ambiente que seria utilizado para testes diversos, trabalho normal e simples. Recebi todos os acessos e permissões corretas para tal, acessei os servidores e instancias necessárias para o processo de backup e restore, espaços em discos estavam ok, não havia impedimentos para realizar um trabalho simples, apenas demorado devido ao tamanho do banco!

Pois bem, backup feito corretamente, arquivos necessários movimentados para o diretório de destino, restore iniciado e ai PÁHHH, deu ruim... nenhum progresso era exibido, não adiantava usar o gráfico ou script, uma demora absurdamente anormal.

No Activity Monitor haviam locks ASYNC_IO_COMPLETION... obviamente não preciso reinventar a roda...

Antes de ir direto para a solução, eu verifiquei que as versões de SQL estavam diferentes entre os ambientes, sendo que o ambiente original era superior ao ambiente de destino. Neste caso apliquei o devido KB para igualar os ambientes.

Agora sim vamos à solução, sem reinventar a roda... uma pesquisa rapida me levou a este link:

http://mattslocumsql.blogspot.com/2014/02/why-are-my-database-restores-so-slow.html

E o link acima aponta pra este link:
https://techcommunity.microsoft.com/t5/Premier-Field-Engineering/How-and-Why-to-Enable-Instant-File-Initialization/ba-p/370329

Lendo o conteúdo dos dois links será fácil resolver o problema de o SQL não apresentar progresso no restore, seja via gráfico ou script, e também a lentidão absurda no processo de restore, criação de banco de dados novo ou crescimento do banco de dados!

Vivendo e aprendendo sempre, graças a Deus!