当前位置: 首页 > 面试题库 >

数据库视图不反映基础表中的数据

端木弘方
2023-03-14
问题内容

输入:

客户声称,查询某些数据时应用程序(.NET)返回的数据与客户直接查看数据表时返回的数据不同。

我了解可能有多种原因,并且在完全不同的地方。我的目的不是在这里解决问题,而是向经验丰富的DBA和DB开发人员询问是否:

VIEW是否可能显示与基础表不匹配的数据?

  • 有哪些可能的原因/原因?
  • 如果表确实没有,视图上的UPDATE语句是否可以导致将来的SELECT返回“更新的”数据?

可能的原因(请对带有问号的问题进行评论):

  1. 原因是有两个单独的交易,这可以解释客户的困惑。
  2. 基础表已更改,但视图未刷新(使用sp_refreshview)
  3. 不同的用户正在连接,并且由于权限的原因可以看到不同的数据吗?
  4. 程序员错误:错误的表/列,错误的过滤器(此处为多合一)
  5. 发生损坏:DBCC CHECKDB应该提供帮助
  6. SELECT ... FOR UPDATE导致这个 ???
  7. ?__

真正发生了什么(答案):

在某些表中,列的位置已更改:显然,客户将完全的数据库访问权授予了顾问,以进行数据库使用情况分析。那个好人改变了列的顺序,以便在使用子句时在表的开头看到几个
审核 字段SELECT * ...

使用dbGhost将数据库模式与出现问题前几天进行的备份模式进行了比较,并发现了列位置的差异。

接下来的事情与编程无关,而更多的是政治问题。

因此,这sp_refreshview是解决方案。我只走了一步,找出是谁造成了问题。谢谢你们。


问题答案:

是的,有点。

可能的原因:

  1. 该视图需要刷新或重新编译。当源列定义更改并且视图(或它所依赖的东西)使用“ *”时发生,可能会令人讨厌。调用sp_RefreshView。也可能由于它调用的视图或函数(数据源)而发生。

  2. 视图正在查看与他们/您的想法不同的事物。他们正在查看错误的表格或视图。

  3. 视图正在以一种意外的方式转换数据。它工作正常,只是不像他们预期的那样。

  4. 视图返回的数据子集与预期的不同。同样,它工作正常,只是不像他们想的那样。

  5. 他们正在查看错误的数据库/服务器或具有导致登录视图更改其显示内容的登录/用户身份。尤其邪恶,因为与Management Studio不同,大多数客户端程序不会告诉您所指向的数据库/服务器。



 类似资料:
  • 1.15.1 MySQL简介 Mysql是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),特别是在WEB应用方面。 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库, 每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。 所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于

  • A Table 对象可以被指示从数据库中已经存在的相应数据库架构对象加载关于其自身的信息。此过程称为 反射 。在最简单的情况下,您只需指定表名,即 MetaData 对象,而 autoload_with 参数:: >>> messages = Table('messages', meta, autoload_with=engine) >>> [c.name for c in messages.co

  • 问题内容: 每次访问数据库记录时,什么是最合适的和最有效的存储视图计数的方法? 我有包含以下字段的表: 每个项目都有自己的永久链接:http : //domain.com/item_name 我希望能够使用此数据并在页面上显示一个。哪种方法最好? 方法一 在表中创建一个附加字段,并对其进行更新以增加视图计数: 方法B 创建一个包含以下字段的新表: 并在每次查看页面时将新记录添加到表中。 方法C 完

  • 通过第二章的学习,我想大家对 SQL 注入攻击应该都非常熟悉了。在我们手工注入的时候,通常我们是要得到管理员的密码。在得到管理员的密码的过程中,我们都是用的数据库的知识,因为管理员的密码是放在数据库中,为了得到管理员的密码,我们当然要操作数据库了,这里所做的操作就是查询数据库。当然在脚本黑客技术中,数据库的作用远远不止这些,比如通常我们还可以利用数据库的差异备份、LOG 备份来获得木马等等。在脚本

  • 问题内容: 提到post,其中Clough先生给出了答案,他已经编写了代码来获取这样的输出, 上面输出的代码如下: 现在,我面临的问题是我不希望发票中有“退货明细”部分。我只想添加公司标题部分而不是信息和客户部分,然后仅出售详细信息和总计。 我正在编写自己根据自己的要求进行更改的代码,但无法剪切返回详细信息部分和“签名”部分。下面是我的代码: 以上代码的输出为: 但我想要这样的输出: 而且我也想减

  • 所有我使用Hibernate和微软SQL服务器。 我有一个视图在我的数据库如下 对于这个视图,我创建了一个类似这样的Pojo类 像这样映射文件 但当我验证映射文件时,会出现如下错误 XML验证开始了。 谁能帮我解决这个问题。 提前谢谢。