Skip to content

Commit 377781a

Browse files
Uwe Jankeclaude
andcommitted
v1.8.6.0: Fix UseExcludeTable Job-Step — Ola-Syntax + QUOTED_IDENTIFIER
Bugfix in New-sqmOlaUsrDbBackupJob -UseExcludeTable: 1. @ExcludeDatabases ist kein Ola-Parameter. Fix: @databases mit !-Prefix-Syntax (USER_DATABASES,!db1,!db2) — funktioniert in allen Ola-Versionen. 2. FOR XML .value() im Agent-Job schlug mit QUOTED_IDENTIFIER-Fehler fehl. SET QUOTED_IDENTIFIER ON an den Anfang des Step-SQL gesetzt. Dyn. SQL via sp_executesql entfernt; Step ist jetzt direktes EXECUTE. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent c7c4652 commit 377781a

3 files changed

Lines changed: 33 additions & 24 deletions

File tree

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# sqmSQLTool — Changelog
22

3+
## [1.8.6.0] — 2026-07-01
4+
5+
### Bugfix
6+
7+
**`New-sqmOlaUsrDbBackupJob`** — UseExcludeTable Job-Step-SQL korrigiert
8+
- Fix: Job-Step verwendete `@ExcludeDatabases` als Ola-Parameter — dieser existiert nicht.
9+
Ola's `DatabaseBackup` kennt nur `@Databases` mit `!`-Prefix-Syntax fuer Ausschluesse
10+
(`USER_DATABASES,!db1,!db2`). Dynamisches SQL via `sp_executesql` entfernt;
11+
Step baut jetzt direkt `@Databases = @Databases + ',' + @Exclusions` zusammen.
12+
- Fix: `FOR XML PATH ... .value()` im Agent-Job-Step schlug mit QUOTED_IDENTIFIER-Fehler
13+
fehl wenn die Session-Option nicht gesetzt war. `SET QUOTED_IDENTIFIER ON;` an den
14+
Anfang des Step-SQL gesetzt.
15+
316
## [1.8.5.0] — 2026-07-01
417

518
### Erweiterungen

Public/New-sqmOlaUsrDbBackupJob.ps1

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
1616
When -UseExcludeTable is set, the function reads master.dbo.sqm_BackupExclude
1717
(created by Sync-sqmBackupExcludeTable) for entries where IsActive=1 AND IsOrphaned=0.
18-
If entries are found, they are passed to Ola's @ExcludeDatabases parameter in the
18+
If entries are found, they are prepended with '!' and appended to the @Databases parameter in the
1919
generated job step command. If the table does not exist or contains no matching rows,
2020
the -Databases parameter is used unchanged.
2121
@@ -110,7 +110,7 @@
110110
111111
.PARAMETER UseExcludeTable
112112
When set, reads master.dbo.sqm_BackupExclude for active, non-orphaned entries and
113-
adds them as @ExcludeDatabases to the Ola DatabaseBackup command in the job step.
113+
adds them as '!DatabaseName' exclusions to the @Databases parameter of Ola's DatabaseBackup.
114114
If the table does not exist or is empty, the Databases parameter is used unchanged.
115115
116116
.PARAMETER CreateSyncJob
@@ -529,38 +529,34 @@ function New-sqmOlaUsrDbBackupJob
529529
# Exclude-Liste wird bei jedem Job-Lauf frisch aus sqm_BackupExclude gelesen —
530530
# aenderungen in der Tabelle wirken sofort, ohne den Job neu anlegen zu muessen.
531531
$olaCommand = @"
532-
DECLARE @ExcludeList NVARCHAR(MAX) = NULL;
532+
SET QUOTED_IDENTIFIER ON;
533+
534+
DECLARE @Databases NVARCHAR(MAX) = N'$Databases';
533535
534536
IF OBJECT_ID(N'master.dbo.sqm_BackupExclude', N'U') IS NOT NULL
535537
BEGIN
536-
SELECT @ExcludeList = STUFF((
537-
SELECT ',' + DatabaseName
538+
DECLARE @Exclusions NVARCHAR(MAX);
539+
SELECT @Exclusions = STUFF((
540+
SELECT ',' + '!' + DatabaseName
538541
FROM master.dbo.sqm_BackupExclude
539542
WHERE IsActive = 1
540543
AND IsOrphaned = 0
541544
FOR XML PATH(''), TYPE
542545
).value('.', 'NVARCHAR(MAX)'), 1, 1, '');
546+
547+
IF @Exclusions IS NOT NULL AND @Exclusions <> ''
548+
SET @Databases = @Databases + ',' + @Exclusions;
543549
END
544550
545-
DECLARE @cmd NVARCHAR(MAX);
546-
SET @cmd = N'EXECUTE master.dbo.DatabaseBackup
547-
@Databases = ''$Databases'',
548-
@Directory = N''$usrBackupDir'',
549-
@BackupType = ''$($jobDef.BackupType)'',
550-
@Verify = ''$Verify'',
551+
EXECUTE master.dbo.DatabaseBackup
552+
@Databases = @Databases,
553+
@Directory = N'$usrBackupDir',
554+
@BackupType = '$($jobDef.BackupType)',
555+
@Verify = '$Verify',
551556
$cleanupParam
552-
@Compress = ''$Compress'',
553-
@CheckSum = ''$CheckSum'',
554-
@LogToTable = ''$LogToTable'''
555-
+ CASE
556-
WHEN @ExcludeList IS NOT NULL AND @ExcludeList <> ''
557-
THEN N',
558-
@ExcludeDatabases = ''' + @ExcludeList + N''''
559-
ELSE N''
560-
END
561-
+ N';';
562-
563-
EXEC sp_executesql @cmd;
557+
@Compress = '$Compress',
558+
@CheckSum = '$CheckSum',
559+
@LogToTable = '$LogToTable';
564560
"@
565561
}
566562
else

sqmSQLTool.psd1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
RootModule = 'sqmSQLTool.psm1'
1818

1919
# Version number of this module.
20-
ModuleVersion = '1.8.5.0'
20+
ModuleVersion = '1.8.6.0'
2121

2222
# ID used to uniquely identify this module
2323
GUID = 'c4b10ba2-aee2-4d8d-ad86-a6e97c346ba6'

0 commit comments

Comments
 (0)