在开发过程中进行了许多更改之后,还包括一些数据库迁移。当我尝试将它们发布到生产服务器时,会引发以下错误。
由于“ ACTIVE_TRANSACTION”,数据库“ XXXX”的事务日志已满。 该声明已终止。
我尝试将开发环境指向生产数据库,并运行navigationBar
,结果相同,但是这次我知道导致迁移的罪魁祸首。
只不过需要在现有表中添加的列数。
Update-Database -Verbose -TargetMigration PendingMigration_2
我的限制是,此WebApp部署在GoDaddy的共享服务器上。我无法更改数据库public partial class fields_added_for_UKAS_calcert : DbMigration
{
public override void Up()
{
AddColumn("dbo.Asset_Calcert", "UKAS_readings_taken_status", c => c.Int(nullable: false, defaultValue: 0));
AddColumn("dbo.Asset_Calcert", "weight_class_m1_1", c => c.Boolean(nullable: false));
AddColumn("dbo.Asset_Calcert", "weight_class_m1_2", c => c.Boolean(nullable: false));
AddColumn("dbo.Asset_Calcert", "weight_class_e2", c => c.Boolean(nullable: false));
AddColumn("dbo.Asset_Calcert", "weight_class_f1", c => c.Boolean(nullable: false));
AddColumn("dbo.Asset_Calcert", "make", c => c.String());
AddColumn("dbo.Asset_Calcert", "device_range", c => c.Int(nullable: false, defaultValue: 0));
.
.
.
}
,也无法更改数据库的Transaction log size
。
是否可以将这种巨大的迁移分成目标服务器可以接受的较小块。否则任何解决方案都会有所帮助。谢谢。
答案 0 :(得分:0)
如果您的意思是中断迁移,请{x}在每次迁移中添加列,然后通过添加{x}列来构建迁移,然后再次添加{x}列,然后进行迁移,直到完成。
public partial class fields_added_for_UKAS_calcert_part1 : DbMigration
{
public override void Up()
{
AddColumn("dbo.Asset_Calcert", "UKAS_readings_taken_status", c => c.Int(nullable: false, defaultValue: 0));
AddColumn("dbo.Asset_Calcert", "weight_class_m1_1", c => c.Boolean(nullable: false));
}
public partial class fields_added_for_UKAS_calcert_part2 : DbMigration
{
public override void Up()
{
AddColumn("dbo.Asset_Calcert", "weight_class_m1_2", c => c.Boolean(nullable: false));
AddColumn("dbo.Asset_Calcert", "weight_class_e2", c => c.Boolean(nullable: false));
}