我在 SQL Server 2008 中创建了一个 SQL 代理作业,它执行以下代码:
BEGIN
SET NOCOUNT ON;
declare @database nchar(20);
DECLARE Database_Cursor CURSOR FOR
SELECT [name]
FROM master.dbo.sysdatabases
ORDER BY [name]
OPEN Database_Cursor;
FETCH NEXT FROM Database_Cursor INTO @database;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC [dbo].[sp_BackupDatabase]
@databaseName = @database
FETCH NEXT FROM Database_Cursor INTO @database;
END;
CLOSE Database_Cursor;
DEALLOCATE Database_Cursor;
END
GO
基本上,我检索数据库列表并为每个数据库执行备份脚本。此脚本适用于大多数数据库,但某些数据库返回错误:
消息 911,级别 16,状态 11,第 1 行
数据库“appName_Configuration”不存在。确保输入的名称正确。
这是正确的,这个数据库不存在。我们有几个这样命名的数据库:
- appName_Configuration1
- appName_Configuration2
- ...
由于某种原因,该脚本不会将包含数字的名称传递给备份脚本。如果我用静态名称 (appName_Configuration1) 替换 @database 变量,它就可以正常工作。
还值得一提的是:还有一些其他数据库最后有一个数字,它们工作正常:
- appName_Microsoft1
- appName_Microsoft2
我怀疑“配置”这个词可能与它有关,但现在重命名数据库不是一个选项。谁能帮我找到解决方案,以便将名称正确传递给存储过程?
亲切的问候,马修