客户声称,查询某些数据时应用程序(.NET)返回的数据与客户直接查看数据表时返回的数据不同。
我了解可能有多种原因,并且在完全不同的地方。我的目的不是在这里解决问题,而是向经验丰富的DBA和DB开发人员询问是否:
SELECT ... FOR UPDATE
在某些表中,列的位置已更改:显然,客户将完全的数据库访问权授予了顾问,以进行数据库使用情况分析。那个好人改变了列的顺序,以便在使用子句时在表的开头看到几个 审核 字段SELECT * ...。
SELECT * ...
使用dbGhost将数据库模式与出现问题前几天进行的备份模式进行了比较,并发现了列位置的差异。
接下来的事情与编程无关,而更多的是政治问题。
因此,这sp_refreshview是解决方案。我只走了一步,找出是谁造成了问题。谢谢你们。
sp_refreshview
是的,有点。
可能的原因:
该视图需要刷新或重新编译。当源列定义更改并且视图(或它所依赖的东西)使用“ *”时发生,可能会令人讨厌。调用sp_RefreshView。也可能由于它调用的视图或函数(数据源)而发生。
视图正在查看与他们/您的想法不同的事物。他们正在查看错误的表格或视图。
视图正在以一种意外的方式转换数据。它工作正常,只是不像他们预期的那样。
视图返回的数据子集与预期的不同。同样,它工作正常,只是不像他们想的那样。
他们正在查看错误的数据库/服务器或具有导致登录视图更改其显示内容的登录/用户身份。尤其邪恶,因为与Management Studio不同,大多数客户端程序不会告诉您所指向的数据库/服务器。