以非编程方式处理 SQL Server 数据的最佳方式是啥?

Posted

技术标签:

【中文标题】以非编程方式处理 SQL Server 数据的最佳方式是啥?【英文标题】:What's the best way to work with SQL Server data non-programmatically?以非编程方式处理 SQL Server 数据的最佳方式是什么? 【发布时间】:2008-09-02 19:17:27 【问题描述】:

我们有一个 SQL 服务器数据库。要以非编程方式操作数据,我可以通过右键单击表并选择“打开表”来使用 SQL Server Management Studio。然而,这对于非常大的表来说很慢,而且排序和过滤很麻烦。

到目前为止,通常我们所做的是创建一个 Access 数据库,其中包含指向 SQL Server 表和视图的链接表。这种方式打开大表要快得多,而且 Access 具有易于使用的右键过滤和排序功能。

但是,自 Access 2007 以来,在处理大型表时,排序尤其慢。 Access 数据库还可能无意中锁定数据库表,从而阻塞可能需要访问数据的其他进程。首先创建 Access 数据库,然后在将新表添加到 SQL Server 时对其进行更新,也很乏味。

有没有更好的方法来处理提供 Access 可用性而没有缺点的数据?

【问题讨论】:

刚刚发布的 Access 2007 修补程序可能会解决您遇到的性能问题。有关详细信息,请参阅support.microsoft.com/kb/956054。但它可能只解决表单中的问题,而不是数据表视图。 【参考方案1】:

Joel Coehoorn 的回答当然是正确的,如果数据很关键或者有天真的用户在使用数据,那么应该开发一个应用程序前端。话虽这么说,但在某些情况下,明智的用户(好吧,我)用户需要进入那里并四处寻找。

不要直接查看表格,而是使用 MS Access,但使用查询来缩小您正在查看的列和行的范围。这将提高速度。然后编辑查询属性并确保查询为无锁。这应该消除任何阻塞行为。您可能希望限制返回的行数,这将再次提高速度。您仍然可以在查看时编辑查询中的数据。

根据您所查看的内容,在 SQL Server 中设置数据库视图以在服务器而不是客户端上完成一些繁重的工作也可能很有用。

【讨论】:

【参考方案2】:

我不知道它在处理非常大的表时效果如何,但对于基本的表操作,Visual Studio 比 SQL Management Studio 快得多。在服务器资源管理器中打开数据库,右键单击表,然后选择“打开”仅显示数据或选择“新查询”进行过滤、排序等。

【讨论】:

Visual Studio 需要几分钟才能打开一个有 600,000 行的表,这实际上比 SSMS 慢一点。而且过滤比Access要麻烦。无论如何感谢您的建议。【参考方案3】:

我使用 Visual Studio 做了很多事情,只是为了方便而不是必须登录到服务器并直接在数据库管理器上工作。

但是,您是否尝试过 Toad for MS SQL(来自 Quest Software)?我一直在为 Oracle 使用它,并且取得了不错的效果(通常比 Oracle 的工具更好)。

【讨论】:

【参考方案4】:

编辑原始数据是一个危险的禁忌。最好找出您发现自己这样做的情况,并将应用程序接口放在一起充当中介,以防止您做一些愚蠢的事情,例如破坏外键。

【讨论】:

“DBMS 应该始终强制执行它可以强制执行的约束,而不是依赖应用程序来避免写入违反约束的数据。”如何破解外键?【参考方案5】:

我不知道大型数据集的性能如何,但 open office 有一个数据库程序 (Base),它是一个 Access 克隆,可能正是您要寻找的。​​p>

【讨论】:

【参考方案6】:

您可能想阅读 Tony Toews's Access Performance FAQ,它提供了许多关于如何提高 Access 应用程序性能的提示。也许其中一个技巧可以解决您的 A2K7 应用程序中的问题。

【讨论】:

以上是关于以非编程方式处理 SQL Server 数据的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# .Net 访问 SQL Server 数据库的最佳方式

在 MS SQL Server Management Studio 中处理事务的最佳方式

将本地 SQL Server 数据库同步到 Azure Windows Server SQL Server 的最佳方式是啥

将 SQL Server 数据库导出到 sqlite(或 SQL Server Compact)的最佳方式

在 SQL Server 2008 R2 和 SQL Server Compact 4 中存储日期/时间数据的最佳方式

如何以非阻塞方式处理 websocket 数据?