SQL 2000のXML形式で次のクエリを出力する必要があります.SQL 2000のXMLのネストレベルが厳密すぎると思われます。どんな助けもありがとうございます。SQLクエリをSQL Server 2000のXML出力に変換するときに問題が発生する
SELECT sd.dbid AS DatabaseID
,NAME AS DatabaseName
,CASE
WHEN NAME IN (
'master'
,'msdb'
,'model'
,'tempdb'
,'distribution'
)
THEN 'S'
ELSE 'U'
END AS SysUserType
,cmptlevel AS CompatibilityLevel
,databasepropertyex(NAME, 'Collation') AS CollationName
,CASE
WHEN databasepropertyex(NAME, 'Status') = 'ONLINE'
THEN 0
WHEN databasepropertyex(NAME, 'Status') = 'RESTORING'
THEN 1
WHEN databasepropertyex(NAME, 'Status') = 'RECOVERING'
THEN 2
WHEN databasepropertyex(NAME, 'Status') = 'RECOVERY_PENDING'
THEN 3
WHEN databasepropertyex(NAME, 'Status') = 'SUSPECT'
THEN 4
WHEN databasepropertyex(NAME, 'Status') = 'EMERGENCY'
THEN 5
WHEN databasepropertyex(NAME, 'Status') = 'OFFLINE'
THEN 6
WHEN databasepropertyex(NAME, 'Status') = 'COPYING'
THEN 7
END AS STATE
,databasepropertyex(NAME, 'Status') AS StateDesc
,CASE
WHEN databasepropertyex(NAME, 'Recovery') = 'FULL'
THEN 1
WHEN databasepropertyex(NAME, 'Recovery') = 'BULK_LOGGED'
THEN 2
WHEN databasepropertyex(NAME, 'Recovery') = 'SIMPLE'
THEN 3
END AS RecoveryModel
,databasepropertyex(NAME, 'Recovery') AS RecoveryModelDesc
,crdate AS DatabaseCreationDate
,B.last_db_backup_date AS LastBackupDate
,a.SizeMB AS SizeMB
,c.NumberOfConnections AS ActiveDBConnections
,SERVERPROPERTY('Machinename') AS SQLServerName
,CASE
WHEN SERVERPROPERTY('Instancename') IS NULL
THEN 'Default'
ELSE SERVERPROPERTY('Instancename')
END AS SQLServerInstanceName
,SERVERPROPERTY('ProductVersion') AS SQLServerVersion
,SERVERPROPERTY('Edition') AS SQLServerEdition
FROM (
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS SERVER
,msdb.dbo.backupset.database_name
,MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
GROUP BY msdb.dbo.backupset.database_name
) AS B
FULL JOIN sysdatabases sd ON sd.NAME = b.database_name
INNER JOIN (
SELECT (SUM(size) * 8/1024) AS SizeMB
,dbid
FROM sysaltfiles
GROUP BY dbid
) AS A ON sd.dbid = a.dbid
FULL JOIN (
SELECT DB_NAME(dbid) AS DBName
,COUNT(dbid) AS NumberOfConnections
FROM sysprocesses
WHERE dbid > 0
AND spid >= 51
GROUP BY dbid
) AS C ON sd.NAME = C.DBName
ORDER BY sd.dbid
これをSQL 2005以上で記述でき、正常に動作しました。私はあなたの膨満感が加わりLastBackupDate
、SizeMB
とActiveDBConnections
直接せずに3つの列を呼び出すことで、クエリを簡素化:しかし、私の人生のためにこれを試してみてくださいSQL 2000
SELECT sd.database_id AS DatabaseID
,sd.NAME AS DatabaseName
,CASE
WHEN sd.NAME IN (
'master'
,'msdb'
,'model'
,'tempdb'
,'distribution'
)
THEN 'S'
ELSE 'U'
END AS SysUserType
,sd.compatibility_level AS CompatibilityLevel
,sd.collation_name AS CollationName
,sd.STATE AS STATE
,sd.state_desc AS StateDesc
,recovery_model AS RecoveryModel
,recovery_model_desc AS RecoveryModelDesc
,create_date AS DatabaseCreationDate
,B.last_db_backup_date AS LastBackupDate
,a.SizeMB AS SizeMB
,c.NumberOfConnections AS ActiveDBConnections
,SERVERPROPERTY('Machinename') AS SQLServerName
,CASE
WHEN SERVERPROPERTY('Instancename') IS NULL
THEN 'Default'
ELSE SERVERPROPERTY('Instancename')
END AS SQLServerInstanceName
,SERVERPROPERTY('ProductVersion') AS SQLServerVersion
,SERVERPROPERTY('Edition') AS SQLServerEdition
FROM (
SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS SERVER
,msdb.dbo.backupset.database_name
,MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date
FROM msdb.dbo.backupmediafamily
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id
GROUP BY msdb.dbo.backupset.database_name
) AS B
RIGHT JOIN sys.databases sd ON sd.NAME = B.database_name
INNER JOIN (
SELECT (SUM(size) * 8/1024) AS SizeMB
,database_id
FROM sys.master_files
GROUP BY database_id
) AS A ON sd.database_id = a.database_id
FULL JOIN (
SELECT DB_NAME(dbid) AS DBName
,COUNT(dbid) AS NumberOfConnections
FROM sys.sysprocesses
WHERE dbid > 0
AND spid >= 51
GROUP BY dbid
) AS C ON sd.NAME = C.DBName
ORDER BY sd.database_id
FOR XML RAW ('DATABASES'),
ROOT ('SERVERROOT'),
Elements
この変換を行うツールはありますか? –