小编fku*_*cuk的帖子

File.Copy和File.Move之间的区别

现在我正在处理一个小应用程序,它在iss服务器上更新mssql的紧凑数据库文件.

我更喜欢使用SSIS来组织流程.几天它运作良好,但后来开始出错.

在SSIS中,我使用"文件系统任务"的"移动文件"操作将生成的文件从文件夹移动到iss服务器的共享文件夹.如果失败,如果文件被锁定,则稍后再尝试.但我看到有时目标文件夹中的文件开始消失.

然后我决定编写自定义代码.我删除了"文件系统任务"并放置了"脚本任务"而不是它.并在其中写几行.

string destinationFile, sourceFile;
destinationFile = Path.Combine(Dts.Variables["FileRemoteCopyLocation"].Value.ToString(), Dts.Variables["CreatedFileName"].Value.ToString());
 sourceFile = Path.Combine(Dts.Variables["OrginalFilePath"].Value.ToString(), Dts.Variables["CreatedFileName"].Value.ToString());


bool written = false;


 try
 {
     File.Copy(sourceFile, destinationFile, true);
     File.Delete(sourceFile);
     written = true;
 }
 catch(IOException) {
    //log it
 }


if (written)
     Dts.TaskResult = (int)ScriptResults.Success;
else
     Dts.TaskResult = (int)ScriptResults.Failure;
Run Code Online (Sandbox Code Playgroud)

它运作良好.但是我通过锁定目标文件来尝试它.我在Sql Server Management Studio中连接了目标文件(它是一个sdf文件).而且令人惊讶的是它也有效.

我已经从操作系统尝试了它,通过复制源文件并将其粘贴到目标.Windows 7问我是否要覆盖它,我说是的,它覆盖了我用于另一个进程的文件(复制和替换),没有警告没有错误.但如果尝试重命名或删除它不会让我这样做.或者,如果我尝试剪切并粘贴它(移动和替换),则表示"您需要获得执行此操作的权限".

据我所知,"复制,删除"和"移动"是完全不同的事情.我仍然无法理解如何覆盖锁定的文件.

有任何想法吗?

c# file-io file

8
推荐指数
1
解决办法
1万
查看次数

取消查询后,交易仍处于打开状态

在sql server 2008中,我使用的是这样的模式:

begin transaction

begin try

/* do something */

end try

begin catch

if @@TRANCOUNT > 0
rollback

 DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int                              
  SELECT @ErrMsg = ERROR_MESSAGE(),                              
         @ErrSeverity = ERROR_SEVERITY()                              

  RAISERROR(@ErrMsg, @ErrSeverity,1)     

end catch

if @@TRANCOUNT > 0
commit transaction
Run Code Online (Sandbox Code Playgroud)

当我点击Sql Server Management Studio上的"取消执行查询"按钮时,它取消查询并使事务保持打开状态.

这是预期的行为吗?或者我的模式中有错误.它不应该回滚交易吗?

sql transactions sql-server-2008

6
推荐指数
1
解决办法
5290
查看次数

团结的抽象工厂

我有一个简单的抽象工厂实现:

  public abstract class ICarFactory{
    public abstract ISportsCar CreateSportCar();
    public abstract IFamilyCar CreateFamilyCar();
}

public abstract class ISportsCar {        
    public abstract void Accelerate();
}

public abstract class IFamilyCar  {
    public abstract void Accelarete();
}

public class BMWFactory : ICarFactory {
    public override ISportsCar CreateSportCar() {
        return new BMWi7();
    }

    public override IFamilyCar CreateFamilyCar() {
        return new BMWM5();
    }
}

public class WolksvagenFactory : ICarFactory {

    public override ISportsCar CreateSportCar() {
        return new WVGolfR();
    }

    public override IFamilyCar CreateFamilyCar() {
        return …
Run Code Online (Sandbox Code Playgroud)

c# unity-container factory-pattern

3
推荐指数
1
解决办法
2980
查看次数