【问题标题】:What is the most efficient way to SELECT data from a second SQL Server instance?从第二个 SQL Server 实例中选择数据的最有效方法是什么?
【发布时间】:2011-11-01 04:13:47
【问题描述】:

我们有一个使用 ASP.NET MVC3 和 SQL Server 2008 的应用程序运行良好。我们需要从 SQL 2000 数据库中检索数据以在 MVC 应用程序中使用。我们已经将 SQL 2000 链接到 SQL 2008 并在 SQL 2008 机器上创建了视图来读取数据,但是性能很糟糕。我们甚至测试了将两个数据库放在同一台机器上并使用视图从一个到另一个读取,但结果相似。似乎使用视图从第二个数据源读取根本不是一种选择。

从第二台机器读取数据的最佳方法是什么?我们只需要读取权限,但不能有来自 MVC 应用程序的专用连接,只有安全的 SQL 到 SQL 连接(它是一个会计系统)

更新:SSMS 按预期选择视图(无连接,少于 1000 行),但其他客户端连接需要 10-15 秒才能显示视图。提供者可能吗?

【问题讨论】:

  • 我们需要知道为什么性能如此糟糕。数据库是否标准化?通过不同的机器访问性能会下降多少?如果使用 SSMS 和普通的 T-SQL 查询,性能仍然很差吗?您正在访问多少数据?你要加入多少张桌子?说真的,性能不佳的潜在原因有很多,尤其是在您尝试在客户端执行此操作时。
  • 如果直接从 SSMS 向链接服务器发出查询,性能是否同样糟糕?在这里我们有一些背景,我们在谈论多少数据以及什么可以称为糟糕的性能?
  • 数据不大(每张表不到 1000 行)并且没有连接。只需 SELECT * FROM 表即可查看视图。奇怪的是,在 SSMS 中查询视图按预期返回(0.0 秒,784 条记录)。但是,从 MVC 应用程序或 OSX 上的 Navicat 运行它,性能会降低到 15 秒左右。是否需要连接参数?
  • 在下面查看我的评论......

标签: sql-server asp.net-mvc performance


【解决方案1】:

找到了答案。 ANSI_NULLS 需要在数据库上设置为 TRUE。由于 SQL Server 的“视图”被 ASP.NET MVC 的“视图”劫持,谷歌很难解决这个问题。本机表中的所有选择语句都可以完美运行,但是使用 DBMSSOCN 从 SQL 视图中选择的 MVC 应用程序需要在数据库上将 ANSI_NULLS 设置为 TRUE。希望这可以为其他人节省大量时间。

【讨论】:

  • 欢迎来到 Stackoverflow!感谢您跟进您的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-13
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多