我有一个SSIS包(在包部署中),它将数据从一个数据库/表复制到另一个数据库/表。这个包有三个连接:
打开包时,它会为config
连接获取环境变量,然后使用该连接访问SSIS_Configurations
并设置其他两个连接。当我在服务器本身的Visual Studio中打开该文件时(因此文件,VS和Config
数据库都在同一个框中),一切都按预期工作。
我们希望从运行包的框中卸载工具。为此,我们建立了一个工作站。此工作站安装了Visual Studio(以及所有相关的数据库驱动程序)并且具有网络驱动器Z:\映射到第一个服务器,通向SSIS包。现在,如果我在Z:\上创建一个项目并将包添加到它,打开包,我收到一个错误。它连接到配置数据库就好了,但是当它试图为其他两个连接提供连接字符串时,我得到Warning loading <package>.dtsx: Not enough storage is available to complete this operation.
有关导致错误的原因的任何想法吗?
我已经检查了
没有.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"
答案 0 :(得分:1)
问题似乎不是磁盘z上没有足够的空间:当程序包尝试运行时,它正在尝试检查磁盘上的可用存储z:,哪个SSMS没有读/写权限
我的建议是在本地运行包,并将其移动到该包中的目标数据库。
另一个选项(注意:未经测试) - 是通过安装在z:驱动器上的SSMS来运行包,然后可以访问它需要告诉它是否有空间运行的窗口互操作。
我一直在本地运行我的软件包并远程推送到目标,以便更好地控制。
我希望这会有所帮助。
答案 1 :(得分:0)
终于解决了。原来,有人手动修改了[SSIS Configuration]
,ConfiguredValue
字段为NVarchar(MAX)
而不是NVarchar(255)
。这样做是因为一个条目长达400个字符。
我们已将其设置为NVarchar(500)
,现在可以正常使用。
答案 2 :(得分:0)
我也遇到过这个问题。 Ram和磁盘空间绰绰有余。摆脱错误的是简单地重启Visual Studio。
答案 3 :(得分:0)
我也得到了这个。在我的情况下,我在“foreach循环”中运行“执行包”任务,并且在大约1100次迭代后我得到“不够存储”错误。无论我是否在拥有大量内存的计算机中运行,都会发生这种情况。磁盘,或在内存较少的虚拟机中运行disk:在两种情况下大约1100次迭代后发生错误。
由此我得出结论,我的错误是由运行“执行包”任务时SSIS中的资源泄漏引起的。
对我有用的解决方法:我将子包的内容复制到“Sequence container”任务。当我这样做时,我能够运行序列容器任务数千次。
答案 4 :(得分:-1)
在平面文件连接属性上 - 查找属性&#34; AlwaysCheckForRowDelimeters&#34; - 将其设置为FALSE。
希望有所帮助。