Voor een klant mocht ik een server migratie uitvoeren (oude SBS omgeving naar Server 2019). Op de oude SBS server stond een SQLExpress instance geïnstalleerd met meer dan 300 databases :(
Dit wilde ik natuurlijk niet met het handje overzetten om RSI te voorkomen :)
In het kort heb ik hier 2 handige scripts voor gebruiken, 1 script om van alle databases (exclusief systeemdatabases) een .bak te creëren en 1 script om al deze .bak bestanden te restoren.
Hieronder het SQL export script:
REVDTEFSRSBAbmFtZSBWQVJDSEFSKDUwKSAtLSBkYXRhYmFzZSBuYW1lICAKREVDTEFSRSBAcGF0aCBWQVJDSEFSKDI1NikgLS0gcGF0aCBmb3IgYmFja3VwIGZpbGVzICAKREVDTEFSRSBAZmlsZU5hbWUgVkFSQ0hBUigyNTYpIC0tIGZpbGVuYW1lIGZvciBiYWNrdXAgIApERUNMQVJFIEBmaWxlRGF0ZSBWQVJDSEFSKDIwKSAtLSB1c2VkIGZvciBmaWxlIG5hbWUKIAotLSBzcGVjaWZ5IGRhdGFiYXNlIGJhY2t1cCBkaXJlY3RvcnkKU0VUIEBwYXRoID0gJ0Q6XFNRTEJhY2t1cHNcJyAgCiAKLS0gc3BlY2lmeSBmaWxlbmFtZSBmb3JtYXQKU0VMRUNUIEBmaWxlRGF0ZSA9IENPTlZFUlQoVkFSQ0hBUigyMCksR0VUREFURSgpLDExMikgCiAKREVDTEFSRSBkYl9jdXJzb3IgQ1VSU09SIFJFQURfT05MWSBGT1IgIApTRUxFQ1QgbmFtZSAKRlJPTSBtYXN0ZXIuZGJvLnN5c2RhdGFiYXNlcyAKV0hFUkUgbmFtZSBOT1QgSU4gKCdtYXN0ZXInLCdtb2RlbCcsJ21zZGInLCd0ZW1wZGInKSAgLS0gZXhjbHVkZSB0aGVzZSBkYXRhYmFzZXMKIApPUEVOIGRiX2N1cnNvciAgIApGRVRDSCBORVhUIEZST00gZGJfY3Vyc29yIElOVE8gQG5hbWUgICAKIApXSElMRSBAQEZFVENIX1NUQVRVUyA9IDAgICAKQkVHSU4gICAKICAgU0VUIEBmaWxlTmFtZSA9IEBwYXRoICsgQG5hbWUgKyAnXycgKyBAZmlsZURhdGUgKyAnLkJBSycgIAogICBCQUNLVVAgREFUQUJBU0UgQG5hbWUgVE8gRElTSyA9IEBmaWxlTmFtZSAgCiAKICAgRkVUQ0ggTkVYVCBGUk9NIGRiX2N1cnNvciBJTlRPIEBuYW1lICAgCkVORCAgIAoKIApDTE9TRSBkYl9jdXJzb3IgICAKREVBTExPQ0FURSBkYl9jdXJzb3I=
Voor het restoren van alle databases heb ik onderstaand PowerShell script gebruikt:
JGJhY2t1cFJvb3QgPSBHZXQtQ2hpbGRJdGVtIC1QYXRoICJEOlxCQUtfRklMRV9GT0xERVIiCiRkYXRhZmlsZXNEZXN0ID0gIkQ6XERBVEFfRklMRV9GT0xERVIiCiRsb2dmaWxlc0Rlc3QgPSAiRDpcTE9HX0ZJTEVfRk9MREVSIgokc2VydmVyID0gInNlcnZlclxpbnN0IiAKCiMjIEZvciBlYWNoIGZvbGRlciBpbiB0aGUgYmFja3VwIHJvb3QgZGlyZWN0b3J5Li4uCiMKZm9yZWFjaCgkZm9sZGVyIGluICRiYWNrdXBSb290KQp7ICAgCiAgICAjIEdldCB0aGUgbW9zdCByZWNlbnQgLmJhayBmaWxlcyBmb3IgYWxsIGRhdGFiYXNlcy4uLgogICAgJGJhY2t1cEZpbGVzID0gR2V0LUNoaWxkSXRlbSAtUGF0aCAkZm9sZGVyLkZ1bGxOYW1lIC1GaWx0ZXIgIiouYmFrIiAtUmVjdXJzZSB8IFNvcnQtT2JqZWN0IC1Qcm9wZXJ0eSBDcmVhdGlvblRpbWUgLURlc2NlbmRpbmcgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCAxCgoKICAgICMgRm9yIGVhY2ggLmJhayBmaWxlLi4uCiAgICBmb3JlYWNoICgkYmFja3VwRmlsZSBpbiAkYmFja3VwRmlsZXMpCiAgICB7CiAgICAgICAgIyBSZXN0b3JlIHRoZSBoZWFkZXIgdG8gZ2V0IHRoZSBkYXRhYmFzZSBuYW1lLi4uCiAgICAgICAgJHF1ZXJ5ID0gIlJFU1RPUkUgSEVBREVST05MWSBGUk9NIERJU0sgPSBOJyIrJGJhY2t1cEZpbGUuRnVsbE5hbWUrIiciCiAgICAgICAgJGhlYWRlckluZm8gPSBJbnZva2UtU3FsY21kIC1TZXJ2ZXJJbnN0YW5jZSAkc2VydmVyIC1RdWVyeSAkcXVlcnkKICAgICAgICAkZGF0YWJhc2VOYW1lID0gJGhlYWRlckluZm8uRGF0YWJhc2VOYW1lCgogICAgICAgICMgUmVzdG9yZSB0aGUgZmlsZSBsaXN0IHRvIGdldCB0aGUgbG9naWNhbCBmaWxlbmFtZXMgb2YgdGhlIGRhdGFiYXNlIGZpbGVzLi4uCiAgICAgICAgJHF1ZXJ5ID0gIlJFU1RPUkUgRklMRUxJU1RPTkxZIEZST00gRElTSyA9IE4nIiskYmFja3VwRmlsZS5GdWxsTmFtZSsiJyIKICAgICAgICAkZmlsZXMgPSBJbnZva2UtU3FsY21kIC1TZXJ2ZXJJbnN0YW5jZSAkc2VydmVyIC1RdWVyeSAkcXVlcnkKCiAgICAgICAgIyBEaWZmZXJlbnRpYXRlIGRhdGEgZmlsZXMgZnJvbSBsb2cgZmlsZXMuLi4KICAgICAgICAkZGF0YUZpbGUgPSAkZmlsZXMgfCBXaGVyZS1PYmplY3QgLVByb3BlcnR5IFR5cGUgLUVRICJEIgogICAgICAgICRsb2dGaWxlID0gJGZpbGVzIHwgV2hlcmUtT2JqZWN0IC1Qcm9wZXJ0eSBUeXBlIC1FUSAiTCIKCiAgICAgICAgIyBTZXQgc29tZSB2YXJpYWJsZXMuLi4KICAgICAgICAkZGF0YUZpbGVOYW1lID0gJGRhdGFGaWxlLkxvZ2ljYWxOYW1lCiAgICAgICAgJGxvZ0ZpbGVOYW1lID0gJGxvZ0ZpbGUuTG9naWNhbE5hbWUKCiAgICAgICAgIyBTZXQgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSByZXN0b3JlZCBmaWxlcy4uLgogICAgICAgICRkYXRhRmlsZUZ1bGxQYXRoID0gJGRhdGFmaWxlc0Rlc3QrIlwiKyRkYXRhRmlsZU5hbWUrIi5tZGYiCiAgICAgICAgJGxvZ0ZpbGVGdWxsUGF0aCA9ICRsb2dmaWxlc0Rlc3QrIlwiKyRsb2dGaWxlTmFtZSsiLmxkZiIKCiAgICAgICAgIyBDcmVhdGUgc29tZSAiUmVsb2NhdGUiIGZpbGUgb2JqZWN0cyB0byBwYXNzIHRvIHRoZSBSZXN0b3JlLVNxbERhdGFiYXNlIGNtZGxldC4uLgogICAgICAgICRSZWxvY2F0ZURhdGEgPSBOZXctT2JqZWN0ICdNaWNyb3NvZnQuU3FsU2VydmVyLk1hbmFnZW1lbnQuU21vLlJlbG9jYXRlRmlsZSwgTWljcm9zb2Z0LlNxbFNlcnZlci5TbW9FeHRlbmRlZCwgVmVyc2lvbj0xMi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj04OTg0NWRjZDgwODBjYzkxJyAtQXJndW1lbnRMaXN0ICRkYXRhRmlsZU5hbWUsICRkYXRhRmlsZUZ1bGxQYXRoCiAgICAgICAgJFJlbG9jYXRlTG9nID0gTmV3LU9iamVjdCAnTWljcm9zb2Z0LlNxbFNlcnZlci5NYW5hZ2VtZW50LlNtby5SZWxvY2F0ZUZpbGUsIE1pY3Jvc29mdC5TcWxTZXJ2ZXIuU21vRXh0ZW5kZWQsIFZlcnNpb249MTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49ODk4NDVkY2Q4MDgwY2M5MScgLUFyZ3VtZW50TGlzdCAkbG9nRmlsZU5hbWUsICRsb2dGaWxlRnVsbFBhdGgKCiAgICAgICAgIyBQZXJmb3JtIHRoZSBkYXRhYmFzZSByZXN0b3JlLi4uIGFuZCB0aGVuIGdvIGFyb3VuZCB0aGUgbG9vcC4KICAgICAgICBSZXN0b3JlLVNxbERhdGFiYXNlIC1TZXJ2ZXJJbnN0YW5jZSAkc2VydmVyIC1EYXRhYmFzZSAkZGF0YWJhc2VOYW1lIC1CYWNrdXBGaWxlICRiYWNrdXBGaWxlLkZ1bGxOYW1lIC1SZWxvY2F0ZUZpbGUgQCgkUmVsb2NhdGVEYXRhLCRSZWxvY2F0ZUxvZykgLVJlcGxhY2VEYXRhYmFzZQogICAgfQp9