Microsoft 将 Microsoft SQL Server 2008 和 Microsoft SQL Server 2008 R2 修补程序分发为一个可下载文件。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2008 或 SQL Server 2008 R2 版本的所有修补程序和所有安全修补程序。

症状

请考虑以下情况:

  • 在 Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2 中创建事务发布。

  • 你有一个索引视图。 将 "索引" 视图的 " ANSI_NULLS " 属性设置为 TRUE。

  • 将索引视图作为文章添加到出版物。 将项目类型设置为 "索引视图 logbased"。注意 你可以使用以下代码来指定索引视图类型。 在运行 sp_addarticle 存储过程将索引视图项目添加到发布时执行此操作。

    @type = N'indexed view logbased'
  • 为事务发布创建订阅。

  • 索引视图将复制到订阅数据库。

在这种情况下,在订阅数据库中,索引视图的 ANSI_NULLS 属性将更改为 FALSE。注意

  • 当 "索引" 视图的 SQL 表达式结构中涉及的表的 ANSI_NULLS 属性设置为 FALSE 时,通常会出现此问题。

  • 此问题也存在于 Microsoft SQL Server 2005 中。

原因

出现此问题的原因是 SQL Server 2008 中的表、视图、函数和存储过程为 ANSI_NULL 属性共享相同的存储位。 因此,如果索引视图的 SQL 表达式结构中涉及的其中一个表的 ANSI_NULLS 属性设置为 false,则索引视图的默认 ANSI_NULLS 属性将为 false。

解决方案

累积更新信息

SQL Server 2008 Service Pack 1

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 1 的累积更新10。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2279604 SQL Server 2008 的累积更新包 10 Service Pack 1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

970365 在发布 SQL Server 2008 Service Pack 1 之后发布的 SQL Server 2008 版本 为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 1 修补程序应用到 SQL Server 2008 Service Pack 1 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

SQL Server 2008 Service Pack 2

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 2 的累积更新1。 有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2289254 SQL Server 2008 Service Pack 2 的累积更新1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2402659 发布 SQL Server 2008 Service Pack 2 后发布的 SQL Server 2008 版本

SQL Server 2008 R2

此问题的修补程序首次在累积更新4中发布。有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2345451 SQL Server 2008 R2 的累积更新程序包4 注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

981356 发布 SQL Server 2008 R2 后发布的 SQL Server 2008 R2 版本

解决方法

若要解决此问题,请在创建索引视图后、运行 sp_addarticle 之前更新元数据缓存,以添加 "索引视图" 文章。注意 若要更新元数据缓存,请使用以下方法之一:

  • 停止 SQL Server 服务,然后启动服务。

  • 将订阅数据库设置为 "脱机",然后将数据库设置为 "联机"。

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

有关 sp_addarticle 存储过程的详细信息,请访问以下 Microsoft 网站:

Sp_addarticle (Transact-sql)存储过程简介有关发布数据和数据库对象的详细信息,请访问以下 Microsoft 网站:

发布数据和数据库对象有关 SQL Server 的增量服务模型的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

935897 从 SQL Server 团队提供的增量服务模型可提供报告问题的修补程序有关 SQL Server 更新的命名架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

822499Microsoft SQL Server 软件更新程序包的新命名架构有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

824684 用于描述 Microsoft 软件更新的标准术语的说明

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×