Translate

Mostrando postagens com marcador bacpac. Mostrar todas as postagens
Mostrando postagens com marcador bacpac. 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.







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

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!

sexta-feira, 17 de maio de 2024

KILL DATABASE CONNECTION. bacpac d365f&o.

 Esta é a mensagem de erro recebida ao tentar restaurar um bacpac:

Error SQL72014: Framework Microsoft SqlClient Data Provider: Msg 4630, Level 16, State 1, Line 1 The permission 'KILL DATABASE CONNECTION' is not supported in this version of SQL Server. Alternatively, use the server level 'ALTER ANY CONNECTION' permission.

Error SQL72045: Script execution error.  The executed script:

GRANT KILL DATABASE CONNECTION TO [ms_db_configreader];


Eu apontei a seguinte dica como solução, mas ela funcionou apenas 01 vez: https://fsilvajunior.blogspot.com/2024/05/kill-database-connection-erro-ao.html


A solução apresentada abaixo funcionou:

Faça o download do arquivo .bacpac e renomeio alterando a extensão para .zip




Abra o arquivo .zip e extraia o arquivo "model.xml":


Utilizando o Notepad X++ abra o arquivo e pesquise por "Grant.KillDatabaseConnection" e remova todo o conteúdo marcado:

Salve o arquivo model.xml.

Faça o download do SQLPackage mais atualizado disponivel, descompacte o arquivo para a sua pasta de preferência. Copie o arquivo model.xml e cole este arquivo dentro da pasta SQLPackage.



Agora execute o comando de restore adicionando o seguinte parâmetro: /mfp:"ModelCopy.xml"



SqlPackage.exe /a:import /sf:"c:\Temp\preprod.bacpac" /tsn:localhost /tdn:AXDB2_New /p:CommandTimeout=1200 /TargetTrustServerCertificate:True /mfp:"ModelCopy.xml"


Boa sorte!

segunda-feira, 21 de novembro de 2022

Error importing database: Could not import package

 If you find this error when importing a .bacpac package to your SQL Server pay attention to the way you are authenticating your connection to SQL Server, even if you are connected into the SQL instance server.



Your line of connection must have this additional parameter:

/TargetTrustServerCertificate:True

Example: SqlPackage.exe /a:import /sf:c:\temp\backup.bacpac /tsn:localhost /targetTrustServerCertificate:True /tdn:AxDBN /p:CommandTimeout=600

If you want to know more about it, go to this place:

https://techcommunity.microsoft.com/t5/azure-sql-blog/connection-security-improvements-in-sqlpackage-161/ba-p/3672758