如何在迁移到MS Azure时替换App_Data \ aspnetdb.mdf?

时间:2018-01-16 21:11:37

标签: azure-web-sites aspnetdb

拥有ASP.NET webforms应用程序,我使用在SQL服务器中创建的aspnetdb数据库。

迁移到Azure时,有没有办法用其他东西替换aspnetdb数据库,以免它从Azure SQL数据库组件中占用一个数据库?或者是否以某种方式支持特定数据库作为App Services(Azure组件)的一部分?

使用Azure App Services时,aspnetdb数据库的形式的典型替换是什么?

更新:在原始应用程序中,我在MS SQL Standard Ed中使用了两个数据库。 - 通常类似于company_users(这是aspnetdb的名称)和company_app的应用程序表。我通常通过创建数据库,角色和初始用户的小型外部应用程序创建company_users - 请参阅下面的缩短代码。

因此,将两个数据库迁移到Azure SQL数据库并以相同的方式使用它可能会更直接。另一方面,必须根据数据库的数量为Azure SQL付费。虽然它适用于company_app,但company_users相当小,可能值得被更便宜的东西取代。这是将框架的身份验证/授权部分(aspnetdb别名company_users)替换为不会占用一个SQL数据库的其他东西的动机。

InitUsers.exe的缩短源代码:

// ... get the configuration information to be used for...
SqlServices.Install(SQLServerName,
                    SQLServerUser, SQLServerPassword,
                    ASPNETdbName, SqlFeatures.All);
// ... and the roles in the loop...
SqlRoleProvider roleProvider = AModule.GetRoleProvider();
string[] roles = { "admin", "poweruser", /* ... */ };
foreach (var role in roles) {
    if (!roleProvider.RoleExists(role))
        roleProvider.CreateRole(role);
}
// ... and the initial users...
List<string[]> userList = new List<string[]> {
    //      0       1                 2        3        4       5       6
    //      login,  email,            roles,   first,   last    tit.,   phone
    new[] { "nemo", "nemo@ocean.org", "admin", "Nihil", "Nemo", "cpt.", "123 456 789"}
};
foreach (var info in userList) {
    string login = info[0];
    string password = ...;
    string email = info[1];
    string[] rolenames = info[2].Split();
    string first = info[3];
    string last = info[4];
    string title = info[5];
    string phone = info[6];

    AModule.MakeUser(login, password, email, rolenames,
                     first, last, title, phone,
                     true);     // isApproved
}

1 个答案:

答案 0 :(得分:1)

  

如何在迁移到MS Azure时替换App_Data \ aspnetdb.mdf?

根据我的理解,您使用的是SQL Server LocalDB。 Azure Web Apps不安装SQL Server Express。我假设您可以将LocalDB数据库迁移到SQL Server或SQL Azure。这是一个类似的issue,你可以参考它。为了将数据库迁移到Azure SQL数据库或SQL Server,您可以按照以下方法进行操作:

  • 使用SQL Server Management Studio(SSMS),右键单击数据库,然后选择“任务&gt;导出数据”,配置数据源和目标。更多详细信息,您可以参考here

  • 使用Visual Studio中的SSIS导入和导出向导,有关详细信息,请参阅here

此外,要创建Azure SQL数据库,您可以关注here。此外,如果您使用的是Entity Framework Model FirstEntity Framework Code First,则可以更改连接字符串并轻松重新生成数据库。