我在这里: 首页 ? 面试试题 ? 浏览文章: SQL Server面试题(合并复制 ,日期错误)
« 联想面试经历慧通C语言面试题 »

SQL Server面试题(合并复制 ,日期错误)




内容摘要:数据看起来“消失”了,这个问题自SQL Server 7.0中的合并复制发布以来一直存在。

关键词:SqlServer面试题  数据库面试题  
本文地址:http://www.teecool.com/post/2007091101.html
内容正文:

SQL Server面试题

水平分区合并复制

数据库面试题

Q. 在运行一个水平分区的合并复制时,为什么数据从订阅者那里消失了?

A. 数据看起来“消失”了,这个问题自SQL Server 7.0中的合并复制发布以来一直存在。合并复制使您可以在订阅数据库上处理事务并将数据传播回出版数据库。像这样的反向传播会在处理水平分区的出版时引发一个独特的问题。

在您应用水平分区时,您基本上是在查询中添加一个Where子句。这个Where子句决定了那些数据行可以被发送给一个特殊的订阅者。假定您将一个联系人数据库针对移动销售人员进行了分割,以便每个移动销售人员的数据库只保有相应于该销售人员所负责区域的联系人数据。例如,如果Joe Smith负责东部地区,他的数据库将只含有东部地区的联系人。水平分区加强了这种限制。

现在,假定Joe所负责的区域发生了变化,他现在负责东南部地区。而Joe的数据库包含的是东部地区的联系人信息,这会和水平分区规则发生冲突。在下一次合并中,Joe会收到所有东南部地区的联系人信息,以便数据库符合分区规则。但是,现在Joe既有东部地区也有东南部地区的联系人数据,这又产生了冲突。

合并复制可以防止您拥有违反分区规则的数据。因此,在合并作业将东南部地区的数据发送给Joe的时候,它还会删除Joe数据库中的东部地区的数据。这种解决办法显然会造成数据丢失,并且在分区规则改变时产生极大的网络流量。

在数据同分区规则发生冲突时,SQL Server会删除那些不符合分区规则的数据。但是,SQL Server不会限制这些数据进入到数据库中。Joe可以添加所负责地区以外的新的联系人记录。SQL Server将这些数据保存在Joe的数据库中,但是在下一次合并之后,这些数据将不会再被保留在数据库中。这样,用户好像就丢失一部分数据。但是实际上,SQL Server并没有真的删除这些数据,SQL Server将这些数据保存在出版者的数据库中,然后从订阅者的数据库中删除了所有与水平分区规则不符的数据。

在SQL Server 7.0中,如果您对订阅数据库进行了一些修改,SQL Server会简单地转储这些修改,并且覆盖它们。因此,在改变分区之前,您必需确保所有的数据都被同步了,否则您将丢失数据。SQL Server 2000包括了一个标志,该标志可以强制系统在重新整理数据以符合分区规则之前先上传所有的修改。在开始对齐数据之前,您可以通过对订阅进行重新初始化来实现数据的预对齐上传。

检查日期错误

Q. 我正在将一个Microsoft Access程序迁移到SQL Server上,我在移动数据时遇到了一个问题。为了解决这个问题,我需要特别注意一些什么事情吗?

A. 一个常见问题是:Access支持的日期从100年1月1日起,而Microsoft Visual FoxPro支持的日期从1年1月1日起,而SQL Server的日期从1753年1月1日起。

您可能认为,程序中不可能存在早于1753年1月1日的日期,但是,在数据输入的过程中,很容易产生这个错误,日期可能在Access和Visual FoxPro中都有效,而在SQL Server中无效。您很可能会把1990年5月12日误输成199年5月12日或者190年5月12日。这可能就是您所遇到的问题的根源所在。

SQL Server面试题(合并复制 ,日期错误)一文有面试题库网收集自互联网,并非本站原创,如原作者发现SQL Server面试题(合并复制 ,日期错误)一文,请及时告知本站,本站会作出相关处理,谢谢!!!(联系方式:百度空间留言)

最近发表