【问题标题】:Visual Studio Integration Services becomes unresponsiveVisual Studio 集成服务变得无响应
【发布时间】:2022-01-31 08:14:26
【问题描述】:

我正在 Visual Studio 中开发 ETL 解决方案,当我从 SQL Server 数据库中选择一个视图时,Visual Studio 会冻结,单击任意位置会导致以下通知:“Visual Studio is Busy”。

这非常令人沮丧,我无法完成我的解决方案。

关于让它更快、更灵敏的任何建议?

【问题讨论】:

  • 尝试改用 SSDT
  • @Amira 有什么区别?我认为 VS2019 更好:/

标签: sql-server visual-studio view ssis etl


【解决方案1】:

我。选择视图作为 OLE DB 源时会发生什么情况?

我创建了一个 SQL Server Profiler 跟踪来跟踪在 AdventureWorks2017 数据库上执行的所有 T-SQL 命令,同时我选择 [HumanResources].[vEmployee] 视图作为 OLE DB 源。

下面的截图显示了以下命令被执行了两次:

set rowcount 1
select * from [HumanResources].[vEmployee]

这意味着 OLE DB 源将查询的结果集限制为单行,并在所选视图上执行 Select * 命令以提取所需的元数据。

值得一提的是,SET ROWCOUNT 1 导致 SQL Server 在返回指定的行数后停止处理查询。这意味着只请求一行,而不是所有视图的数据。

二。问题的可能原因

您提到的问题主要是由于以下原因造成的:

(1) Visual Studio 中安装的第三方扩展

在这种情况下,您应该尝试以安全模式启动 Visual Studio,以防止加载第三方扩展。您可以使用以下命令

devenv.exe /safemode

(2)查看查询大量数据

如果视图返回大量数据或包含错误的JOINS,Visual Studio 可能会冻结。您可以使用简单的解决方法解决此问题。更改视图的 SQL 并添加一个只返回几行的条件(例如SELECT TOP 1)。然后,在设计包时使用此视图。完成后,删除添加的条件。

(3) 糟糕的数据库设计

此外,您的视图设计良好并且基础表具有适当的索引非常重要。此外,请检查您是否存在与数据库设计相关的任何问题。例如:

(a) 索引碎片

索引碎片是索引性能值的百分比,可以通过SQL Server DMV获取。您可以参考以下文章了解更多信息:

(b) 大二元列

确保视图不包含大型二进制列,因为它会严重影响查询执行。

(4) 硬件问题

即使我认为这不应该是这种情况下的原因。尝试检查您机器上的可用资源。例如:

(a) 存储空间不足

如果使用 Windows,请检查 C: 驱动器存储(默认系统数据库目录)和存储数据库的驱动器,并确保它们未满。

(b) 服务器内存不足

确保您的计算机没有内存不足。您可以简单地使用任务管理器来确定可用内存量。

(5) 优化 Visual Studio 性能

最后要提到的是,有几条建议可以提高 Visual Studio 的性能。随意检查它们:

【讨论】:

    【解决方案2】:

    当您尝试针对一个巨大的表验证 select 语句时,有时会发生这种情况。根据 RDBMS,某些数据源在进行验证时不能很好地仅返回要验证的元数据,而是运行 Select * from table。因此,验证可能会持续很长时间。

    尝试检查这是否真的发生,在加载包时检查包中 RDBMS 上正在运行的查询。

    否则尝试复制包并切换到 XML 并重新构建它,直到发现问题。从您的 XML 文件中删除问题,保存并在设计器中重绘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 2018-06-03
      • 2021-04-18
      • 2015-11-14
      • 1970-01-01
      相关资源
      最近更新 更多