在SQL Server 2017中,当尝试保存或维护一个计划时,可能会遇到“保存维护计划失败-无效的类字符串错误”的问题。这个错误通常是由于计划中包含了无效的类字符串引起的。以下是解决该问题的步骤:
步骤1:确定无效的类字符串
首先,需要确定哪个类字符串无效引起了该错误。可以通过查看错误消息的详细信息来确定无效的类字符串。例如,错误消息可能类似于“Invalid class string [xxxx]”。
步骤2:检查类字符串的有效性
接下来,需要检查类字符串的有效性。确保类字符串的格式正确,并且指向一个有效的类或对象。类字符串的格式通常是“provider=XXXX;server=XXXX;database=XXXX;user=XXXX;password=XXXX”。
步骤3:检查相关的连接信息
如果类字符串中包含连接信息,例如服务器名称、数据库名称、用户名和密码等,需要确保这些信息是正确的。检查服务器名称、数据库名称、用户名和密码是否正确,并且具有访问所需数据库的权限。
步骤4:检查SQL Server版本和驱动程序
确保使用的SQL Server版本和驱动程序与应用程序兼容。如果使用的SQL Server版本与驱动程序不兼容,可能会导致无效的类字符串错误。
步骤5:重新创建计划
如果以上步骤都没有解决问题,可以尝试删除并重新创建计划。在删除计划之前,确保先备份计划以防止数据丢失。然后,使用正确的类字符串重新创建计划。
以下是一个使用有效类字符串的示例:
EXEC msdb.dbo.sp_add_job
@job_name = N'TestJob',
@enabled = 1,
@start_step_id = 1,
@owner_login_name = N'sa',
@description = N'Test job description',
@server_name = N'MyServer',
@database_name = N'MyDatabase',
@command = N'SELECT * FROM MyTable',
@notify_level_eventlog = 0,
@notify_level_email = 0,
@notify_level_netsend = 0,
@notify_level_page = 0,
@delete_level = 0,
@category_name = N'[Uncategorized]',
@job_id = @job_id OUTPUT
EXEC msdb.dbo.sp_add_jobstep
@job_id = @job_id,
@step_id = 1,
@step_name = N'TestJobStep',
@subsystem = N'TSQL',
@command = N'SELECT * FROM MyTable',
@database_name = N'MyDatabase',
@output_file_name = N'C:\Temp\TestJobOutput.txt',
@on_success_action = 1,
@on_fail_action = 2
EXEC msdb.dbo.sp_add_schedule
@schedule_name = N'DailySchedule',
@enabled = 1,
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 0,
@active_end_time = 235959
EXEC msdb.dbo.sp_attach_schedule
@job_id = @job_id,
@schedule_id = @schedule_id
EXEC msdb.dbo.sp_add_jobserver
@job_id = @job_id,
@server_name = N'(local)'
请注意,上述示例中的类字符串可能不适用于您的环境。您需要根据您的实际情况进行相应的更改。