asp.net - 构建不需要用户了解 SQL 的自定义 SQL 查询工具 (ASP.NET)

标签 asp.net sql-server

希望我能就此获得一些架构建议。我被要求开发一个“自定义报告”模块,基本上可以使用户在不了解 SQL 的情况下查询数据库中的任何表。向我表达的想法是,用户应该能够使用类似英语的方式来说出他们想要什么表,需要显示哪些字段,他们想要的任何过滤,现在他们可能需要创建具有以下功能的查询:数据库中的外键关系。

我最初的想法是提供一个“向导”,让用户 1) 从下拉列表中选择一个表,2) 通过应用的自定义属性获取可用列的列表,并非所有列都被允许到特殊的“查询”类,以及 3) 使用下拉列表中类似英语的命名法添加各种过滤查询(例如“IS EQUAL TO”而不是“=”,“IS IN”而不是“IN ()”)。

但是,由于我需要能够知道,看起来很神奇,如果用户请求 x 数据,我必须将表连接在一起,我不知道如何正确构建它,或者即使它是可行的(管理似乎认为是...)。

对于解决此类问题有什么建议或建议吗?用户是要访问网站的外部客户,而不是内部客户,所以我不能只说“让他们使用 MS Access”或类似的内容,但我不能只做一个列名称转储或为他们提供一个大文本框输入 SQL 查询。我能想到的唯一方法是为数据提供特定的 View ,但这违背了模块的愿景(不必为客户想要的每个报告创建 View /过程)。

编辑请注意,我们没有使用报告服务; “报告”实际上只是一个表格 GridView,而不是 SSRS 报告。

最佳答案

无论你做什么,都不要让他们查询生产数据库。他们必然会运行一些可怕的表扫描,这会破坏应用程序的性能。

只需告诉管理层,即使是数据库 OEM 也没有想出一种方法让最终用户轻松地从数据库获取数据。你最好的选择是使用SQL Server Analysis Services 。这确实是最终用户查找自己数据的最佳方式(迄今为止)。

关于asp.net - 构建不需要用户了解 SQL 的自定义 SQL 查询工具 (ASP.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5423537/

相关文章:

尽管没有调用,Javascript 打开新窗口

asp.net - 捕获 SSL 证书请求错误以便重定向到正确的站点

c# - 从 GridView 导出为 PDF

sql-server - 一个新的 BI/数据库项目 : how to take databases under version control?

python - 如何在 Anaconda 中连接到 SQL Server 数据库

c# - Lucene.net 可以用于基于标签的搜索系统吗?

jquery - 为什么 Web 服务返回数据为 msg.d

sql - 连续日期的分组岛,包括错过的周末

asp.net - 在 ASP.NET GridView 中显示分页,即使是单个页面

sql - 在线和本地sql数据库同步