我。选择视图作为 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 的性能。随意检查它们: