【问题标题】:Azure SQL bacpac Fails on Special Characters in Stored ProceduresAzure SQL bacpac 在存储过程中的特殊字符上失败
【发布时间】:2021-12-13 22:52:36
【问题描述】:

尝试将数据库从 Azure GOV 租户移动到标准 Azure 租户。据我所知,由于存储过程中的特殊字符(斜杠、美元符号等),导出失败。这些已正确转义并作为独立的 T-SQL 脚本工作。我可以删除所有 SP,移动数据库,然后恢复。但必须有更好的方法。

还有其他人对存储过程主体中的特殊字符有疑问吗?我对尝试在租户之间移动的其他方式持开放态度,但空手而归。

【问题讨论】:

    标签: sql azure backup restore bacpac


    【解决方案1】:

    为您的代码添加正确的参数处理将是一种更可靠的处理方法。

    使用 cmd.Parameters.AddWithValue(String parameterName, Object value) | SqlParameterCollection.Add 方法

    https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlparametercollection.add?redirectedfrom=MSDN&view=dotnet-plat-ext-5.0#System_Data_SqlClient_SqlParameterCollection_Add_System_String_System_Object_

    如果通过创建 SQLCommand 对象并向其添加参数来运行 SQL,则使用特殊字符作为参数会更简单。

    替代方案

    要迁移资源,您可以使用 Azure 界面、Azure PowerShell、Azure CLI 或 REST API。将资源移动到新的资源组或订阅 | https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/move-resource-group-and-subscription

    在移动过程中,源组和目标组都是 锁定。直到搬迁完成,写入和删除活动 在资源组上被禁止。您不能添加、更改或删除 资源组中的资源(如果它们被锁定)。这并不意味着 资源已被冻结。使用 如果迁移 Azure SQL,数据库将不会遇到任何停机时间 逻辑服务器及其数据库到不同的资源组或 订阅。他们仍然可以访问数据库,并且可以阅读和 写信给他们。虽然锁可以持续长达四个小时,但大多数 演习在相当短的时间内完成。

    在跨订阅移动资源之前,您必须确保以下几点: 源订阅和目标订阅必须位于同一文件夹中。

    1. 在两个订阅中,一个用户帐户必须能够 生成和删除资源。
    2. 您必须同时迁移该服务器上的所有 SQL 数据库。

    如果 SQL Server 和目标目录位于不同的目录中,您可以将 SQL Server 转移到临时试用订阅,然后将该订阅移动到目标目录(从旧门户),然后在使用目标目录的新门户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多