协调多个用户所做的更改

更新:2007 年 11 月

在某些环境下,多个用户可以同时对同一个对象进行更改。例如,用户可以在表设计器或数据库关系图设计器中更新对象的结构,或者在查询设计器和视图设计器的“结果”窗格中更改值。这种情况可能会导致一些您必须解决的冲突。

表或数据库关系图设计器中的冲突

例如,当您在表设计器中处理某个表时,另一个用户可能会删除或重命名同一个表或相关的表。当您试图保存表时,“检测到数据库更改”对话框(数据库设计器)将通知您数据库在您打开该表后进行了更新。

该对话框还显示一个列表,列出保存您的表时将受到影响的数据库对象。此时,您可以执行下列操作之一:

  • 选择“是”保存表并使用此列表中的所有更改对数据库进行更新。

    此操作会影响共享相同数据库对象的表。例如,假设您所编辑的是 titleauthors 表中的 au_id 列,而另一个用户正在处理 authors 表,该表通过 au_id 列与此 titleauthors 表关联。如果您保存您的表,则您所做的更改将影响另一个用户的表。同样,另一个用户也可以为 sales 表中的 qty 列定义 CHECK 约束。如果您删除 qty 列并保存 sales 表,则另一个用户的 CHECK 约束将受到影响。

  • 选择“否”取消保存操作。

    然后可关闭表,不保存所做的更改。重新打开该表时,它将与数据库中的内容匹配。

  • 选择“保存文本文件”保存更改列表。

    可以将“检测到数据库更改”对话框中显示的数据库更改列表保存到文本文件中,以便可以调查其他用户所做更改的起因。例如,如果另一个用户编辑了您标记为删除的表,则您可能希望搞清楚更新数据库之前是否应删除该表。

查询和视图设计器中的冲突

如果运行查询或返回视图结果,数据就会显示在“结果”窗格中。多个用户可以同时对同一组数据进行操作,这便可能导致冲突。

例如,您和同事可以各自运行一个查询,显示 titleauthors 表中的所有数据。您的同事将返回的第一个记录中的名字由“Barb”改为“Barbara”。此时,数据库的该字段中为“Barbara”,而您的结果集仍显示“Barb”。现在您键入“Barbara”并在该行外单击。将显示一条消息,询问您希望如何解决此冲突。

  • 单击“是”使用您所做的更改更新数据库。

    此选项将重写您同事所做的更改。

  • 单击“否”更新您的结果集以使其与数据库相匹配。

    此选项将使用您同事所做的更改重写您所做的更改。

  • 单击“取消”继续编辑而不解决此冲突。

    在这种情况下,将无法将您所做的更改提交给数据库。

请参见

任务

如何:生成更改脚本

参考

“检测到数据库更改”对话框(数据库设计器)

其他资源

使用脚本