为什么'TestDatabase2'也匹配'TestDatabase'?类似地,'D2'也匹配'D'.
exec sp_executesql N'SELECT TOP 1
sdb.name AS DbName,
bus.backup_start_date AS LastBackUpTime,
bus.type AS Type
FROM
sys.sysdatabases sdb
LEFT OUTER JOIN
msdb.dbo.backupset bus
ON
bus.database_name = sdb.NAME
AND
bus.type = @backupType
WHERE
sdb.name = @dbname
ORDER BY
LastBackUpTime DESC',N'@dbName nvarchar(12),@backupType nvarchar(1)',@dbName=N'TestDatabase',@backupType=N'D'
Run Code Online (Sandbox Code Playgroud)
数据库名称的参数是NVARCHAR(12).
猜猜有多少个字符TestDatabase;)
SELECT CAST('TestDatabase' as NVARCHAR(12)), CAST('TestDatabase12314' as NVARCHAR(12))
Run Code Online (Sandbox Code Playgroud)
你应该把它变成a NVARCHAR(128)或a SYSNAME,这是msdb.dbo.backupset.database_name和sys.databases.name列的长度.