我们有一个完全运行的数据库服务器,比如 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中执行任务时遇到的错误 - >右键单击脚本任务对象 - >执行任务
我不熟悉Microsoft Visual C#,我刚开始使用SSIS包,所以我真的很茫然。
更新:
我试着在C#脚本中注释掉不同的行。最后,当我注释掉File.Delete(@sourcePath + namePart);
时,调用zip.dtsx的作业已经成功。但是,我不知道为什么我这条线路出错了。我不确定这是因为权限还是其他任何原因。