私は、サポート目的でクライアントから大規模なSQLデータベースのバックアップを定期的に受け取る会社で働いています。複数のSQLバージョンと照合順序をサポートしていますが、現在、正しいSQLインスタンスに復元する前に、クライアントのSQLバージョンを手動で確認する必要があります。このプロセスを自動化する方法があるかどうか疑問に思っています。
私は探しています:
正しくない可能性があるSQLインスタンスへの完全な復元を必要とせず、そのサイズのためにかなりの時間がかかります。 (たぶん少しずつ復元しますか?)
RESTORE HEADERONLY コマンドを使用してバックアップファイルを検査することにより、いくつかの情報を取得できます。リンクされたドキュメントは、すべての結果セットフィールドとその意味を説明していますが、探しているものは次のとおりです。
[SoftwareVersionMajor]
_ [SoftwareVersionMinor]
_を参照)[SoftwareVersionMinor]
_も必要です。この値は、そのバージョンでは「50」、その他のバージョンでは「00」になるはずです(これまでのところ)[Collation]
_例えば:
_RESTORE HEADERONLY FROM DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Backup\master.bak'
_
それは結果セットを返します。アプリのコードからこれを実行している場合、これらの特定のフィールドを取得するのはかなり簡単なはずです。これをT-SQLから実行していて、プログラムで操作する必要がある場合は、次のことを行う必要があります。
INSERT INTO ... EXEC(...)
構文内で_RESTORE HEADERONLY
_コマンドを実行します:_INSERT INTO #TempBackupInfo
EXEC(N'RESTORE HEADERONLY FROM DISK =
N''C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\Backup\master.bak'';');
_