Ik probeer mijn diep weggezonken SQL-kennis weer wat bij te spijkeren. Daarom heb ik een scriptje gebouwd voor SQL Server 2019 + SSMS 19.1 wat onderhoud op databases kan doen.
Nu doet dat script niet wat ik wil en ik snap niet waar het aan ligt. Ongetwijfeld dat ik op de verkeerde termen Google.
Ik heb het probleem geïsoleerd door alles wat irrelevant is uit het script te halen. Dan blijft dit over.
Eerst een werkende variant van dat script. De database NietHierDb wordt niet gevonden en de code in het BEGIN-END block wordt ook niet uitgevoerd. Zoals ik verwacht.
En dan een tweede versie met een USE statement in het BEGIN-END block. Het script geeft nu een error op het USE-statement ondanks dat er niet wordt voldaan aan de voorwaarde in het IF-block en het BEGIN-END blok dus helemaal niet uitgevoerd mag worden.
Nu doet dat script niet wat ik wil en ik snap niet waar het aan ligt. Ongetwijfeld dat ik op de verkeerde termen Google.
Ik heb het probleem geïsoleerd door alles wat irrelevant is uit het script te halen. Dan blijft dit over.
Eerst een werkende variant van dat script. De database NietHierDb wordt niet gevonden en de code in het BEGIN-END block wordt ook niet uitgevoerd. Zoals ik verwacht.
code:
1
2
3
4
| IF EXISTS ( SELECT * FROM [sys].[master_files] WHERE [name] = 'NietHierDb' ) BEGIN PRINT 'NietHierDb is gevonden' END |
En dan een tweede versie met een USE statement in het BEGIN-END block. Het script geeft nu een error op het USE-statement ondanks dat er niet wordt voldaan aan de voorwaarde in het IF-block en het BEGIN-END blok dus helemaal niet uitgevoerd mag worden.
code:
1
2
3
4
5
| IF EXISTS ( SELECT * FROM [sys].[master_files] WHERE [name] = 'NietHierDb' ) BEGIN USE [NietHierDb] PRINT 'NietHierDb is gevonden' END |