Visual Studio 集成服务变得无响应
Visual Studio Integration Services becomes unresponsive
我正在 Visual Studio 中开发 ETL 解决方案,当我 select 从 SQL 服务器数据库查看时,Visual Studio 冻结,点击任意位置结果在以下通知中:“Visual Studio 忙”。
这非常令人沮丧,我无法完成解决方案的创建。
有什么建议可以让它更快、响应更快吗?
当您尝试针对巨大的 table 验证 select 语句时,有时会发生这种情况。根据 RDBMS 的不同,一些数据源在进行验证时并没有很好地返回元数据来进行验证,而是 运行 Select * from table
。因此,验证可能会持续很长时间。
尝试检查这是否真的发生了,请在加载包时检查包中 RDBMS 上的 运行ning 查询。
否则尝试复制包并切换到 XML 并重建它直到发现问题。从您的 XML 文件中删除问题,保存并在设计器中重新绘制。
我。选择视图作为 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 服务器在返回指定行数后停止处理查询。这意味着只请求了一行而不是视图的所有数据。
二.问题的可能原因
您提到的问题主要是由于以下原因造成的:
(1) Third-party 个扩展安装在 Visual Studio
在这种情况下,您应该尝试在安全模式下启动 Visual Studio 以防止加载 third-party 扩展。您可以使用以下命令
devenv.exe /safemode
(2)View查询数据量大
Visual Studio 如果视图 returns 包含大量数据或包含错误的 JOINS,则可能会冻结。您可以使用简单的解决方法解决此问题。更改视图的SQL并添加一个条件,即只有returns几行(例如SELECT TOP 1
)。然后,在设计包时使用此视图。完成后,删除添加的条件。
(3) 糟糕的数据库设计
此外,您的视图设计良好并且基础表具有适当的索引非常重要。此外,检查您是否没有任何与数据库设计相关的问题。例如:
(a) 索引碎片
索引碎片是以百分比表示的索引性能值,可以通过SQL服务器DMV获取。您可以参考以下文章了解更多信息:
(b) 大二进制列
确保视图不包含大型二进制列,因为它会严重影响查询执行。
- Best Practices for tables with VARBINARY(MAX)
- How Your SQL Server Data Type Choices Can Affect Database Performance
(4) 硬件问题
即使我认为这不应该是那种情况的原因。尝试检查您机器上的可用资源。例如:
(a) 驱动器超出存储空间
如果使用 windows,请检查 C:
驱动器存储 (默认系统数据库目录) 和存储数据库的驱动器并确保它们未满。
(b) 服务器内存不足
确保您的机器没有 运行 内存不足。您可以简单地使用任务管理器来确定可用内存量。
(5) 优化 Visual Studio 性能
最后要提的是,有几个建议可以提高 Visual Studio 的性能。请随时检查它们:
我正在 Visual Studio 中开发 ETL 解决方案,当我 select 从 SQL 服务器数据库查看时,Visual Studio 冻结,点击任意位置结果在以下通知中:“Visual Studio 忙”。
这非常令人沮丧,我无法完成解决方案的创建。
有什么建议可以让它更快、响应更快吗?
当您尝试针对巨大的 table 验证 select 语句时,有时会发生这种情况。根据 RDBMS 的不同,一些数据源在进行验证时并没有很好地返回元数据来进行验证,而是 运行 Select * from table
。因此,验证可能会持续很长时间。
尝试检查这是否真的发生了,请在加载包时检查包中 RDBMS 上的 运行ning 查询。
否则尝试复制包并切换到 XML 并重建它直到发现问题。从您的 XML 文件中删除问题,保存并在设计器中重新绘制。
我。选择视图作为 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 服务器在返回指定行数后停止处理查询。这意味着只请求了一行而不是视图的所有数据。
二.问题的可能原因
您提到的问题主要是由于以下原因造成的:
(1) Third-party 个扩展安装在 Visual Studio
在这种情况下,您应该尝试在安全模式下启动 Visual Studio 以防止加载 third-party 扩展。您可以使用以下命令
devenv.exe /safemode
(2)View查询数据量大
Visual Studio 如果视图 returns 包含大量数据或包含错误的 JOINS,则可能会冻结。您可以使用简单的解决方法解决此问题。更改视图的SQL并添加一个条件,即只有returns几行(例如SELECT TOP 1
)。然后,在设计包时使用此视图。完成后,删除添加的条件。
(3) 糟糕的数据库设计
此外,您的视图设计良好并且基础表具有适当的索引非常重要。此外,检查您是否没有任何与数据库设计相关的问题。例如:
(a) 索引碎片
索引碎片是以百分比表示的索引性能值,可以通过SQL服务器DMV获取。您可以参考以下文章了解更多信息:
(b) 大二进制列
确保视图不包含大型二进制列,因为它会严重影响查询执行。
- Best Practices for tables with VARBINARY(MAX)
- How Your SQL Server Data Type Choices Can Affect Database Performance
(4) 硬件问题
即使我认为这不应该是那种情况的原因。尝试检查您机器上的可用资源。例如:
(a) 驱动器超出存储空间
如果使用 windows,请检查 C:
驱动器存储 (默认系统数据库目录) 和存储数据库的驱动器并确保它们未满。
(b) 服务器内存不足
确保您的机器没有 运行 内存不足。您可以简单地使用任务管理器来确定可用内存量。
(5) 优化 Visual Studio 性能
最后要提的是,有几个建议可以提高 Visual Studio 的性能。请随时检查它们: