Bug #:50001012 (SQL 修补程序)
症状
在 Microsoft SQL Server 2005 Service Pack 2 (SP2) 中,在某些情况下,维护计划中的以下任务可能会丢失数据库上下文:
- 检查数据库完整性
- 执行 T-SQL 语句
例如,如果将“检查数据库完整性”任务配置为检查多个数据库的完整性,则该任务将重复检查默认数据库。
对于执行 T-SQL 语句任务,如果满足以下条件,则会出现此问题:
执行 T-SQL 语句任务包含多个批处理。
批次由 GO 语句分隔。
批处理均不使用 USE 语句指定数据库。
每批处理中的语句不包含数据库名称。
在这种情况下,第二批和后续批处理中的这些语句将针对默认数据库执行。
注意 可以使用 SQL Server Profiler 确认是否出现了此问题。 跟踪维护计划执行时,请参阅 SQL Server Profiler 中的“数据库”列。
解决方法
此问题发生在 SQL Server 2005 内部版本 3042 到 3053 和 SQL Server 2005 内部版本 3150 到 3158 中。 如果运行的是介于 3042 和 3053 之间的 SQL Server 2005 SP2 内部版本,请从 Microsoft 下载中心下载并安装以下关键更新。
若要获取此更新的独立程序包,请转到 Microsoft 更新目录网站。
安装此关键更新后,SQL Server 2005 的内部版本为 3054。
有关如何下载 Microsoft 支持文件的更多信息,请单击以下文章编号,以查看 Microsoft 知识库中相应的文章:
119591 如何从联机服务获取Microsoft支持文件Microsoft扫描此文件是否有病毒。 Microsoft 使用的是文件发布时可以获得的最新病毒检测软件。 该文件存储在安全性得到增强的服务器上,以防止对文件进行未经授权的更改。
文件信息
此关键更新的英文版的文件属性 (或更高版本的文件属性) 如下表中列出。 这些文件的日期和时间以协调世界时 (UTC) 格式列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。
32 位版本的 SQL Server 2005
| 文件名 | 文件版本 | 文件大小 | 日期 | 时间 | 平台 |
|---|---|---|---|---|---|
| Microsoft.sqlserver.maintenanceplantasks.dll | 9.0.3054.0 | 296,304 | 2007 年 3 月 23 日 | 2,113 | x86 |
| Sqlaccess.dll | 2005.90.3054.0 | 350,576 | 2007 年 3 月 23 日 | 2,113 | x86 |
| Sqlservr.exe | 2005.90.3054.0 | 29,181,808 | 2007 年 3 月 23 日 | 2,113 | x86 |
基于 x64 的 SQL Server 2005 版本
| 文件名 | 文件版本 | 文件大小 | 日期 | 时间 | 平台 |
|---|---|---|---|---|---|
| Microsoft.sqlserver.maintenanceplantasks.dll | 9.0.3054.0 | 296,304 | 2007 年 3 月 23 日 | 2,113 | x86 |
| Sqlaccess.dll | 2005.90.3054.0 | 357,744 | 2007 年 3 月 24 日 | 02:40 | x86 |
| Sqlservr.exe | 2005.90.3054.0 | 38,516,080 | 2007 年 3 月 24 日 | 02:40 | x64 |
基于 Itanium 版本的 SQL Server 2005
| 文件名 | 文件版本 | 文件大小 | 日期 | 时间 | 平台 |
|---|---|---|---|---|---|
| Microsoft.sqlserver.maintenanceplantasks.dll | 9.0.3054.0 | 296,304 | 2007 年 3 月 23 日 | 2,113 | x86 |
| Sqlaccess.dll | 2005.90.3054.0 | 352,112 | 2007 年 3 月 24 日 | 03:59 | x86 |
| Sqlservr.exe | 2005.90.3054.0 | 72,583,024 | 2007 年 3 月 24 日 | 03:59 | ia64 |
如果您运行的是 3150 和 3158 之间的 SQL Server 2005 SP2 的任何内部版本,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
934459修复: 在 SQL Server 2005 版本 3150 到 3158 中,在某些情况下,维护计划中的“检查数据库完整性”任务和“执行 T-SQL 语句”任务可能会丢失数据库上下文
若要以自动方式获取此关键更新,请访问以下 Microsoft 更新网站:
https://update.microsoft.com安装此关键更新后,SQL Server 2005 的内部版本为 3161。
有关如何确定 SQL Server 版本的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
321185 如何识别SQL Server版本
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
详细信息
在 SQL Server 2005 SP2 的原始发行版及更早版本中,与维护计划任务相关的命令会累积然后同时执行。 发生错误时,将不再执行任务,并且不再执行剩余的维护任务。 在 SQL Server 2005 SP2 中,一次提交一个批处理。 在 SQL Server 2005 SP2 的原始发行版本中,批次之间的数据库连接被重置。 后来的批次保留在默认数据库的上下文中,而不是在执行 GO 语句之前存在的上下文中。 受影响的任务取决于执行 GO 语句之前存在的上下文,特别是“检查数据库完整性”任务和“执行 T-SQL 语句”任务。