【问题标题】:After migrating database and mobile service the mobile service is still using old schema迁移数据库和移动服务后,移动服务仍在使用旧模式
【发布时间】:2015-01-31 02:30:32
【问题描述】:

我需要将 azure 项目移至新帐户。我的天蓝色项目由一个 SQL 数据库和一个连接到该数据库的移动服务组成。

我通过将数据库备份到 .bacpac 文件并将其导入新的 Azure 帐户来移动数据库。我手动重新创建了移动服务。因为移动服务需要一个不同的名称,所以我通过运行以下命令更改了导入表的架构:

ALTER SCHEMA [NewSchema]
    TRANSFER [OldSchema].[TableName]

现在迁移后SELECT 可以工作了。在 azure 门户中,我可以看到所有表都有行,并且移动服务可以从数据库中读取。然而,问题在于插入和服务的自定义 API。

这些似乎仍然适用于旧模式:

Insert: Error: [Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid object name '[OldSchema].[TableName]'. (SqlState: 42S02, Code: 208)
CustomAPI: Error: [Microsoft][SQL Server Native Client 10.0][SQL Server]Invalid object name '[OldSchema].[TableName]'.

我在任何地方都找不到对旧模式的引用。不在代码库中,不在数据库中。

我什至去处决了

SELECT * FROM sys.database_principals

alter user <userName> WITH DEFAULT_SCHEMA = [NewSchema]

适用于所有用户。

我没有想法。我错过了什么,它在哪里引用旧模式?

感谢您的帮助!

编辑:我刚刚尝试在我尝试执行的自定义 API 中打印 SELECT SCHEMA_NAME()。它打印了正确的、新的架构名称。当我打印SELECT CURRENT_USER 时,打印了正确的用户,并带有正确的默认架构。我现在比以往任何时候都更加困惑。

【问题讨论】:

    标签: azure migration database-migration azure-mobile-services


    【解决方案1】:

    你能检查你的数据库触发器吗?有一个在 Insert/Update/Delete 上运行的触发器可能仍然引用您的旧架构。

    【讨论】:

    • 是的,就是这样!这也是一个完美的解释,我从来没有想过!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多