SQL Server 2022维护计划报错‘Culture is not supported’求助
解决SQL Server 2022维护计划「Culture is not supported. Parameter name: culture 3072 (0x0c00) is an invalid culture identifier」错误
问题场景
运行环境:
- Windows 2022服务器(已安装最新更新)
- SQL Server 2022 CU 13(16.0.4125.3)
- SSMS版本20.1或19.x,部署在W11、W2012、W2022等机器
创建维护计划对所有用户数据库执行完整+事务日志备份(完整恢复模式),执行时仅第一个数据库完成备份,后续任务失败,报错文化标识符3072无效。尝试修改区域设置、复制旧版本维护计划均无效,但手动执行维护计划对应的T-SQL可成功。
解决方案尝试
1. 调整SQL Server Agent服务账户的区域设置
- 打开
services.msc,找到SQL Server Agent服务,右键进入「属性」-「登录」,确认服务运行账户(默认是NT SERVICE\SQLSERVERAGENT) - 若为系统账户,通过
control intl.cpl打开区域设置,将「区域格式」设置为明确的有效文化(如英语(美国)、中文(简体,中国)),不要选择「匹配Windows显示语言」这类自动选项 - 重启SQL Server Agent服务,重新执行维护计划
2. 更换维护计划任务的执行账户
- 打开维护计划,进入备份任务的「属性」
- 在「执行选项」中,将任务执行账户替换为权限足够的域账户或本地管理员账户(确保该账户的区域设置为系统支持的文化)
- 保存计划后重新测试
3. 用SQL代理作业+存储过程替代维护计划
由于手动执行T-SQL可成功,可将备份逻辑封装为存储过程,再通过SQL代理作业定时执行:
CREATE PROCEDURE dbo.BackupAllUserDatabases AS BEGIN SET NOCOUNT ON; DECLARE @DBName NVARCHAR(128), @FullBackupPath NVARCHAR(256), @LogBackupPath NVARCHAR(256); DECLARE db_cursor CURSOR LOCAL FAST_FORWARD FOR SELECT name FROM sys.databases WHERE name NOT IN ('master','model','msdb','tempdb') AND state_desc = 'ONLINE' AND recovery_model_desc = 'FULL'; OPEN db_cursor; FETCH NEXT FROM db_cursor INTO @DBName; WHILE @@FETCH_STATUS = 0 BEGIN -- 生成全量备份路径 SET @FullBackupPath = N'C:\Backup\' + @DBName + N'_Full_' + CONVERT(NVARCHAR(20), GETDATE(), 112) + N'.bak'; BACKUP DATABASE @DBName TO DISK = @FullBackupPath WITH INIT, COMPRESSION, STATS = 10; -- 生成事务日志备份路径 SET @LogBackupPath = N'C:\Backup\' + @DBName + N'_Log_' + CONVERT(NVARCHAR(20), GETDATE(), 112) + N'_' + REPLACE(CONVERT(NVARCHAR(20), GETDATE(), 108), ':', '') + N'.trn'; BACKUP LOG @DBName TO DISK = @LogBackupPath WITH INIT, COMPRESSION, STATS = 10; FETCH NEXT FROM db_cursor INTO @DBName; END CLOSE db_cursor; DEALLOCATE db_cursor; END
- 创建SQL Server代理作业,添加「T-SQL脚本」步骤,调用
EXEC dbo.BackupAllUserDatabases; - 设置作业的执行计划,替代原维护计划的定时备份功能
4. 修复SQL Server安装
- 下载SQL Server 2022 CU13安装包,运行安装程序选择「修复」选项
- 修复完成后重启SQL Server及Agent服务,重新测试维护计划
问题原因推测
错误中的文化标识符3072(0x0c00)对应旧的zh-CHS文化代码,新版本SQL Server/.NET框架已不再支持该旧格式。SQL Server Agent执行维护计划时,使用的账户区域设置映射到了这个无效代码,导致任务失败;而手动执行T-SQL时使用的是当前登录用户的有效区域设置,因此可正常运行。
内容的提问来源于stack exchange,提问作者SwitchNikky
相关产品推荐
相关产品推荐

