脚本任务

时间:2016-10-14 08:35:26

标签: c# sql-server visual-studio-2015 ssis script-task

我们有一个完全运行的数据库服务器,比如 serverA ,其数据每天都会刷新。 我们希望在不同的服务器上复制此数据库 serverB ,以便我们有一个测试环境。数据库已恢复到serverB。

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

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

现在,由于包zip.dtsx,这项工作总是失败。 zip.dtsx 从directoryA中检索文件,压缩它们并将压缩文件保存到directoryB,然后删除directoryA中的文件。但是,我无法弄清楚为什么它有运行时错误

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

脚本语言 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中执行任务时遇到的错误 - >右键单击脚本任务对象 - >执行任务 enter image description here

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

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

0 个答案:

没有答案