Visual Studio 在 SSIS 包上抛出 'Not Enough storage is available'
Visual Studio throws 'Not Enough storage is available' on SSIS package
我有一个 SSIS 包(在包部署中)将数据从一个 database/table 复制到另一个 database/table。这个包有三个连接:
- 一个用于源数据库
- 一个用于暂存区(目标)
- 一个用于配置数据库
打开包时,它会获取 config
连接的环境变量,然后使用该连接访问 SSIS_Configurations
并设置另外两个连接。当我在服务器本身的 Visual Studio 中打开该文件时(因此文件、VS 和 Config
数据库都在同一个盒子上),一切都按预期工作。
我们想从安装包 运行 的盒子中卸载工具。为此,我们正在建立一个工作站。此站点已安装 Visual Studio(连同所有相关的数据库驱动程序),并且有一个网络驱动器 Z:\ 映射到第一台服务器,从而指向 SSIS 程序包。现在,如果我在 Z:\ 上创建一个项目并将包添加到其中,打开包,我会收到错误消息。它连接到配置数据库很好,但是当它尝试检索其他两个连接的连接字符串时,我得到
Warning loading .dtsx: Not enough storage is available to complete this operation
知道导致此错误的原因吗?
我已经检查过了
- 有足够的磁盘 space 和内存可用
这不是 .Net 错误。这是在专家交流中提出的建议,因此我在 Powershell 脚本中使用 .Net 对此进行了测试。这个运行很好(注意:Powershell在这里只是一个切线,不在这个问题的范围内):
[reflection.assembly]::loadwithpartialname("System.IO")
$f = @()
$f = [System.IO.Directory]::GetFiles("Z:\<dir\to\package>\")
for ($i=0;$i -le $f.length; $i++)
{
Write-Host $f[$i]
}
我看了这个没有用:SSIS - Process failing with message : "Not enough storage is available to complete this operation"
- 这个我也看到了。仅供参考,我的工作站上有 3GB 可用 RAM,服务器上有 >20GB:Not enough storage is available to complete this operation
问题似乎不是磁盘 z: 上没有足够的 space:当程序包尝试 运行 时,它正在尝试检查磁盘 z: 上的可用存储空间,哪个 SSMS 没有 read/write 权限。
我的建议是 运行 在本地安装包,然后将其移动到该包内的目标数据库。
另一个选项(注意:未经测试)- 是通过安装在 z: 驱动器上的 SSMS 运行 包,然后它可以访问 windows 互操作,它需要告诉它是否有 space 到 运行.
我总是 运行 我的包在本地并远程推送到目标以便更好地控制。
希望对大家有所帮助。
终于解决了。结果是有人手动更改了 [SSIS Configuration]
,使得 ConfiguredValue
字段为 NVarchar(MAX)
而不是 NVarchar(255)
。这样做是因为一个条目的长度为 400 个字符。
我们已将其设置为 NVarchar(500)
,现在可以使用了。
我也 运行 处理过这个问题。 Ram 和磁盘 space 绰绰有余。为我消除错误的是简单地重新启动 Visual Studio.
我也收到了。在我的例子中,我在 "foreach loop" 中 运行ning 一个 "execute package" 任务,在大约 1100 次迭代后我得到了 "Not enough storage" 错误。无论我是 运行 在具有大量 RAM 和磁盘的计算机中,还是 运行 在具有较少 RAM 和磁盘的虚拟机中,都会发生这种情况:在这两种情况下,错误都发生在大约 1100 次迭代之后。
由此我得出结论,我的错误是由 运行 执行 "Execute package" 任务时 SSIS 中的资源泄漏引起的。
对我有用的解决方法:我将子包的内容复制到 "Sequence container" 任务。当我这样做时,我能够 运行 序列容器任务数千次。
在您的平面文件连接属性上 - 查找 属性 "AlwaysCheckForRowDelimeters" - 将其设置为 FALSE。
希望对您有所帮助。
我有一个 SSIS 包(在包部署中)将数据从一个 database/table 复制到另一个 database/table。这个包有三个连接:
- 一个用于源数据库
- 一个用于暂存区(目标)
- 一个用于配置数据库
打开包时,它会获取 config
连接的环境变量,然后使用该连接访问 SSIS_Configurations
并设置另外两个连接。当我在服务器本身的 Visual Studio 中打开该文件时(因此文件、VS 和 Config
数据库都在同一个盒子上),一切都按预期工作。
我们想从安装包 运行 的盒子中卸载工具。为此,我们正在建立一个工作站。此站点已安装 Visual Studio(连同所有相关的数据库驱动程序),并且有一个网络驱动器 Z:\ 映射到第一台服务器,从而指向 SSIS 程序包。现在,如果我在 Z:\ 上创建一个项目并将包添加到其中,打开包,我会收到错误消息。它连接到配置数据库很好,但是当它尝试检索其他两个连接的连接字符串时,我得到
Warning loading .dtsx: Not enough storage is available to complete this operation
知道导致此错误的原因吗?
我已经检查过了
- 有足够的磁盘 space 和内存可用
这不是 .Net 错误。这是在专家交流中提出的建议,因此我在 Powershell 脚本中使用 .Net 对此进行了测试。这个运行很好(注意:Powershell在这里只是一个切线,不在这个问题的范围内):
[reflection.assembly]::loadwithpartialname("System.IO") $f = @() $f = [System.IO.Directory]::GetFiles("Z:\<dir\to\package>\") for ($i=0;$i -le $f.length; $i++) { Write-Host $f[$i] }
我看了这个没有用:SSIS - Process failing with message : "Not enough storage is available to complete this operation"
- 这个我也看到了。仅供参考,我的工作站上有 3GB 可用 RAM,服务器上有 >20GB:Not enough storage is available to complete this operation
问题似乎不是磁盘 z: 上没有足够的 space:当程序包尝试 运行 时,它正在尝试检查磁盘 z: 上的可用存储空间,哪个 SSMS 没有 read/write 权限。
我的建议是 运行 在本地安装包,然后将其移动到该包内的目标数据库。
另一个选项(注意:未经测试)- 是通过安装在 z: 驱动器上的 SSMS 运行 包,然后它可以访问 windows 互操作,它需要告诉它是否有 space 到 运行.
我总是 运行 我的包在本地并远程推送到目标以便更好地控制。
希望对大家有所帮助。
终于解决了。结果是有人手动更改了 [SSIS Configuration]
,使得 ConfiguredValue
字段为 NVarchar(MAX)
而不是 NVarchar(255)
。这样做是因为一个条目的长度为 400 个字符。
我们已将其设置为 NVarchar(500)
,现在可以使用了。
我也 运行 处理过这个问题。 Ram 和磁盘 space 绰绰有余。为我消除错误的是简单地重新启动 Visual Studio.
我也收到了。在我的例子中,我在 "foreach loop" 中 运行ning 一个 "execute package" 任务,在大约 1100 次迭代后我得到了 "Not enough storage" 错误。无论我是 运行 在具有大量 RAM 和磁盘的计算机中,还是 运行 在具有较少 RAM 和磁盘的虚拟机中,都会发生这种情况:在这两种情况下,错误都发生在大约 1100 次迭代之后。
由此我得出结论,我的错误是由 运行 执行 "Execute package" 任务时 SSIS 中的资源泄漏引起的。
对我有用的解决方法:我将子包的内容复制到 "Sequence container" 任务。当我这样做时,我能够 运行 序列容器任务数千次。
在您的平面文件连接属性上 - 查找 属性 "AlwaysCheckForRowDelimeters" - 将其设置为 FALSE。
希望对您有所帮助。