Sql server 间接访问表,同时仍允许更新表

Sql server 间接访问表,同时仍允许更新表,sql-server,Sql Server,我计划通过“查询Microsoft SQL Server 2012”考试。我想更好地理解一个问题。 问题是: 你将如何完成这项任务 你是一名数据库开发人员 在ABC.com。ABC.com有一个名为SalesDB的SQL Server 2012数据库,其中包含 名为Invoices的表。应用程序开发人员正在开发几个 将访问发票表的内部应用程序。你需要 开发一个解决方案,允许应用程序访问 表,但仍允许他们更新发票 桌子你将如何完成这项任务 可能的答案是 A.您应该在发票表上创建一个视图 B.您应该

我计划通过“查询Microsoft SQL Server 2012”考试。我想更好地理解一个问题。
问题是:

你将如何完成这项任务
你是一名数据库开发人员 在ABC.com。ABC.com有一个名为SalesDB的SQL Server 2012数据库,其中包含 名为Invoices的表。应用程序开发人员正在开发几个 将访问发票表的内部应用程序。你需要 开发一个解决方案,允许应用程序访问 表,但仍允许他们更新发票 桌子你将如何完成这项任务

可能的答案是

A.您应该在发票表上创建一个视图

B.您应该在用户使用的所有列上创建列存储索引 应用程序

C.您应该允许应用程序通过 存储过程

D.您应该删除发票表并将其重新创建为分区发票 桌子可能的答案是

资料来源: 他们说正确答案是C,但我不知道为什么?我认为这是正确的,因为视图“间接”处理数据。

感谢您的帮助。

只有当存储过程和使用的表具有相同的所有者时,才会对存储过程进行注释所有权链接

因此,我想指出另一个论点

您可以作为另一个用户执行存储过程。这意味着您可以创建一个无需登录的用户并授予更新权限。假设用户的名称是UPDATEInvoices。创建存储过程时,可以定义它必须作为用户的comtext执行。
因此,当您授予想要调用存储的proc EXECUTE权限的用户时,他可以更新表中的行,因为它使用其他权限运行。

但是如果您有一个视图,而用户没有更新基表的权限,他们就不能通过视图来更新基表。但是,如果更新是通过一个过程进行的,并且他们有权执行该过程,则更新将起作用。既然你正在准备考试,为什么不把它转起来测试一下呢?构建表、为用户分配权限、创建视图和过程所需的时间不会超过10-15分钟。测试一下。没有什么比边做边学更好的了。我显然被这个问题弄糊涂了。我认为它试图解决阻塞和并发问题。但是“C”并没有以我所能想到的任何方式解决这个问题。@TabAlleman我想问题是如何允许用户更新他们无权访问的表。不管目的是什么,这个问题的措辞都很糟糕。在不相关的新闻中,我的测试写作咨询服务为新业务提供了一些带宽。我看着你,微软。。。