0

我们有一个完全运行的数据库服务器,比如serverA,它的数据每天都会刷新。我们想在不同的服务器上复制这个数据库, serverB说,这样我们就有了一个测试环境。数据库已恢复到 serverB。

与 serverA 一样,我们希望 serverB 的数据也每天刷新,因此我们在 serverB 上进行的测试可以说是完全准确的,因为它们将具有与 serverA 相同的数据。我们在 serverB 中部署了 serverA 中使用的 SSIS 包,并在 serverB 中复制了 SQL Server 代理作业

我正在尝试修改这些作业和包,以便它们可以在 serverB 上顺利运行,我正在更改目录路径、服务器名称等。

现在,这个作业总是因为一个包 zip.dtsx 而失败。 zip.dtsx从目录A 检索文件,压缩它们并将压缩文件保存到目录B,然后删除目录A 中的文件。但是,我无法弄清楚它为什么会出现运行时错误

zip.dtsx 有一个名为Zip files的脚本任务。

脚本语言为Microsoft Visual C# 2010

ReadOnlyVariables集是User::DestinationPath, User::NamePart, User::SourcePath,$Package::filename

剧本是,

public void Main()
        {
            String sourcePath = Convert.ToString(Dts.Variables["SourcePath"].Value);
            String namePart = Convert.ToString(Dts.Variables["NamePart"].Value);
            String destinationPath = Convert.ToString(Dts.Variables["DestinationPath"].Value);
            FileStream sourceFile = File.OpenRead(@sourcePath + namePart);
            FileStream destFile = File.Create(@destinationPath + namePart);

            GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress);

            try
            {
                int theByte = sourceFile.ReadByte();
                while (theByte != -1)
                {
                    compStream.WriteByte((byte)theByte);
                    theByte = sourceFile.ReadByte();
                }
            }
            finally
            {
                compStream.Dispose();
                sourceFile.Close();
                destFile.Close();
                File.Delete(@sourcePath + namePart);
            } 

            Dts.TaskResult = (int)ScriptResults.Success;
        }

当我在 Microsoft Visual Studio 中执行任务时出现的错误 - >右键单击脚本任务对象 - >执行任务 在此处输入图像描述

我对 Microsoft Visual C# 不熟悉,而且我也刚刚开始使用 SSIS 包,所以我真的很茫然。

更新:我尝试在 C# 脚本中注释掉不同的行。最后,当我注释掉时File.Delete(@sourcePath + namePart);,调用 zip.dtsx 的工作已经成功。但是,我不确定为什么我在这条线上有错误。我不确定是因为权限还是其他原因。

4

0 回答 0