从SQL Server数据库检索数据的用户友好工具

4
我们有几个 SQL Server 数据库,其中包含我们构建的发电机的测量数据。然而,由于大多数工程师不熟悉 SQL(包括我在内),因此这些有用的数据只能被少数工程师访问。是否有任何工具可以允许工程师提取所需子集的数据以便在 Excel 或其他环境中进行分析?理想的工具应具备以下特点:
  1. 保护数据库不受任何意外更改;
  2. 无需 SQL 知识即可提取数据;
  3. 非常易于使用,例如具有 GUI 来选择字段和所选时间范围;
  4. 允许将数据值导出到可以被 Excel 读取的文件中;
  5. 提取任务运行时不需要数据库管理员的参与/输入;
  6. 对于新手数据库管理员来说设置容易。
感谢任何推荐或建议。

当您说“测量数据”时,它是指经常变化的数据,还是指设备规格? - JNK
测量数据以0.1秒的时间步长不断收集。表格中测量的字段示例包括:发电机温度、发电机电流、发电机转速等。实际上有80多个字段,给定的表格可能包含数月的数据,每0.1秒添加一行新数据。用户将提取所选字段(例如发电机温度)中包含的数据,针对时间范围(如“2010-10-05 00:00:00.000”至“2001-10-05 01:00:00.000”)。但是执行提取的用户不知道如何将其编写为SQL查询。 - KAE
4个回答

3

首先,我绝不会让用户在生产机器上运行他们自己的查询。他们可能会一整天运行表扫描或其他性能杀手。

我们有一个类似的情况,通常为用户创建自定义存储过程进行“调用”,并且只允许访问运行“几乎实时”数据的备份服务器。

我们的用户熟悉Excel,所以我创建了一个带有大量参数用于过滤/自定义的存储过程,他们可以轻松地通过使用以下内容进行调用:

EXEC YourProcedureName '01/01/2010','12/31/2010','Y',null,1234

我会详细记录参数的作用,这样通常就可以了解了。

要设置一个Excel查询,您需要在用户的电脑上设置数据源(控制面板 - 数据源- odbc),具体操作略有不同,取决于您的Windows版本。

在Excel中,您需要设置"查询",它只是上面提到的EXEC命令。根据Excel的版本,应该是这样的:菜单 - 数据 - 导入外部数据 - 新数据库查询。然后选择数据源,连接,跳过表图制作器并输入上面的SQL。此外,不要试图让一个过程完成所有任务,根据它们的功能创建不同的过程。

一旦数据出现在Excel工作表上,我们的用户就可以自由地将其拖到其他工作表上并随意操纵。

一些用户比较高级,尝试编写自己的SQL语句,但这很痛苦。我最终要调试和修复他们不正确的查询。此外,一旦您更正了查询,他们总是会改动它并再次破坏它。使用存储过程意味着他们无法更改它,而我可以将它与我们其他的过程放在源代码库中。


小提示:Microsoft Query是Office组件,允许您在Excel中执行此操作[1]:http://office.microsoft.com/zh-cn/excel-help/use-microsoft-query-to-retrieve-external-data-HA010099664.aspx - Conrad Frix

1
我建议您在Excel中自己构建。Excel可以通过ODBC连接向SQL Server数据库进行查询。如果做得正确,最终用户只需点击“获取数据”按钮即可。然后他们就可以使用Excel的所有GUI功能来查看数据。

0

Excel允许直接将存储过程的输出加载到选项卡中。在我看来,这是最好的方法:用户不需要了解SQL,他们只需调用一个过程,除了Excel和您的数据库之外,没有其他额外的移动部件。


0
根据您的SQL服务器版本,我建议使用一些出色的自助式BI工具,如Report Builder等较新版本。这就像是一个简化版的Visual Studio,将所有复杂的部分剥离,只留下简单的报告部分。
如果您设置了一个共享数据源,并以相当低的访问权限登录到服务器,则用户可以构建报告但无法编辑任何内容。
我赞同KM的评论,让普通用户在生产系统上运行查询可能会导致一些有趣的结果,例如使用错误的查询或大量表扫描或笛卡尔积等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接