12. September 2023 16:00
12. September 2023 18:35
12. September 2023 21:20
12. September 2023 22:28
13. September 2023 07:39
christophhennef hat geschrieben:Manuell nach dem Erstellen der Datenbank kein Problem, im Script passiert nichts.
14. September 2023 08:41
Write-Host -ForegroundColor Yellow "Start DB Clone..."
# erster Schritt JobQueue RPOD abschalten
Write-Host -ForegroundColor Yellow "Schritt 1: Stopp JobQueue in PROD-DB"
# load NAV Admin PS
Import-Module "NavAdminTool.ps1"
# Ausscahlten JobQueue
foreach ($inp -eq 0 {
. c:\users\test\stop_jc.ps1
}
# zweiter Scritt DB-Backup erzeugen von PROD-DB
Write-Host -ForegroundColor Yellow "Schritt 2: DB Backup PROOD-DB"
invoke-sqlcmd -inputfile "backup_prod_db.sql" -serverinstance "SQL" -database "TEST"
# dritter Schritt wenn Backup erfolgreich, JobQueue PROD wieder aktivieren
if (Test-Path $fileToCheck -PathType leaf)
{
#do some stuff
Write-Host -ForegroundColor Yellow "Schritt 3: Start JobQueue in PROD-DB"
# load NAV Admin PS
Import-Module "NavAdminTool.ps1"
# enable Jobqueue
}
# vierter Schritt: Start Restore auf DEBUG
Write-Host -ForegroundColor Yellow "Schritt 4: Restore DEBUG-DB aus Backup PROD"
invoke-sqlcmd -inputfile "20230901_cre_debug.sql" -serverinstance "SQL"
# fünfter Schritt: Start Restore auf DEBUG
Write-Host -ForegroundColor Yellow "Schritt 5: Restore REPORT-DB aus Backup PROD"
invoke-sqlcmd -inputfile "20230901_cre_report.sql" -serverinstance "SQL"
# fertig
Write-Host -ForegroundColor Yellow "Database DEBUG und REPORT aus PROD erzeugt..."
#SOAP URL für den Service (In BC unter Webdienste)
$webServiceUrl = "http://www.test.de:7047/TEST/WS/xxx/Codeunit/JobQueueManagement"
# Anmeldedaten SUPE USER
$username = "xxxxxxxxxxxx"
$password = "xxxxxxxxxxxx"
# Aufgabenwarteschlangenposten IDs die auf abwarten gesetzt werden sollen
$jobQueueIds = @(
"1281"
)
# XML Request erstellen
$xmlRequest = @"
<JobQueueManagement xmlns="urn:microsoft-dynamics-schemas/codeunit/JobQueueManagement">
<JobQueueIds>$($jobQueueIds -join ',')</JobQueueIds>
</JobQueueManagement>
"@
# Anmeldung zum Webdienst
$credentials = New-Object System.Management.Automation.PSCredential ($username, (ConvertTo-SecureString $password -AsPlainText -Force))
# HTTP Request um JobQueues auf abwarten zu setzen
$response = Invoke-RestMethod -Uri $webServiceUrl -Method Post -Credential $credentials -ContentType "application/xml" -Body $xmlRequest
Write-Host $response
14. September 2023 09:31
christophhennef hat geschrieben:Hi,
stimmt, das wäre eine Idee. Wir wollen das aber automatisiert laufen lassen und da wäre es cool, wenn wir die Jobs in PROD anhalten können scriptbasiert, dann ein Backup ziehen und dann die richtigen Jobs wieder aktivieren könnten...
Viele Grüße
Christoph
14. September 2023 10:03
14. September 2023 10:34
DECLARE @SourceDatabaseName varchar(200)
DECLARE @SourceDatabaseLogicalName varchar(200)
DECLARE @SourceDatabaseLogicalNameForLog varchar(200)
DECLARE @query varchar(2000)
DECLARE @DataFile varchar(2000)
DECLARE @LogFile varchar(2000)
DECLARE @BackupFile varchar(2000)
DECLARE @TargetDatabaseName varchar(200)
DECLARE @TargetDatbaseFolder varchar(2000)
-- ****************************************************************
SET @SourceDatabaseName = '[quelle]' -- Name of the source database
SET @SourceDatabaseLogicalName = 'Demo Database BC (20-0)_Data' -- Logical name of the DB ( check DB properties / Files tab )
SET @SourceDatabaseLogicalNameForLog = 'Demo Database BC (20-0)_Log' -- Logical name of the DB ( check DB properties / Files tab )
SET @BackupFile = 'd:\BACKUP\TESTBACKUP.bak' -- FileName of the backup file
SET @TargetDatabaseName = 'DEBUG' -- Name of the target database
SET @TargetDatbaseFolder = 'D:\DATA\'
DECLARE @TableName VARCHAR(255);
DECLARE TableList CURSOR LOCAL FAST_FORWARD FOR
SELECT name
FROM sys.objects
WHERE name LIKE '%job queue entry$%'
AND type_desc LIKE '%TABLE%';
OPEN TableList;
FETCH NEXT FROM TableList
INTO @TableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Query = 'update table [debug].[dbo].[' + @TableName + '] set status = 3 where status <> 3;';
PRINT 'Executing query : Update JobQueue ';
PRINT @Query;
EXEC (@Query);
FETCH NEXT FROM TableList
INTO @TableName;
END;
PRINT 'OK!';
14. September 2023 11:32
christophhennef hat geschrieben:...
Zudem müsste mandas eigentlich auf der Quell-DB starten, damit beim Backup die Einträge schon richtig wären und nach dem Restore kein Job anläuft..
Daher kam ich auf die Idee mit dem Powershell JobQueueManagement...:
- Anhalten auf PROD der Jobs
...
14. September 2023 14:23