Azure sql database 更改Azure SQL Server排序规则

Azure sql database 更改Azure SQL Server排序规则,azure-sql-database,collation,Azure Sql Database,Collation,我们正试图将数据库放在SQLAzure中,我们遇到了一个问题。我们有一个排序规则为Latin1\u General\u CI\u AI的存储过程,其中有一些与sys.objects的联接,它似乎有一个排序规则为SQL\u Latin1\u General\u CP1\u CI\u AS。当我们试图创建存储过程时,我们得到了错误 无法解决等于操作中“SQL\u Latin1\u General\u CP1\u CI\u AS”和“Latin1\u General\u CI\u AI”之间的排序规则

我们正试图将数据库放在SQLAzure中,我们遇到了一个问题。我们有一个排序规则为Latin1\u General\u CI\u AI的存储过程,其中有一些与sys.objects的联接,它似乎有一个排序规则为SQL\u Latin1\u General\u CP1\u CI\u AS。当我们试图创建存储过程时,我们得到了错误

无法解决等于操作中“SQL\u Latin1\u General\u CP1\u CI\u AS”和“Latin1\u General\u CI\u AI”之间的排序规则冲突

我们可以通过在sys.object连接的末尾添加COLLATE SQL\u Latin1\u General\u CP1\u CI\u AS来创建存储过程,但是我们有多个地方使用sys.object,而且我还了解到临时表可能有同样的问题


因此,我的问题是,有没有办法更改“服务器”的排序规则,在创建新的SQL server(逻辑服务器)时,我看不到任何内容。这将省去我们到处强制排序的麻烦。

目前,无法更改现有Azure SQL数据库的排序规则。但是,您可以在创建数据库时指定排序规则。
如果您正在通过Azure Portal创建,您将在创建对话框中看到排序规则选项。请参阅此处的一些详细信息:

我可以使用bacpac完成此操作

  • 使用ManagementStudio中的“导出数据层应用程序”导出数据库
  • 复制一份bacpac
  • 通过将扩展名更改为.zip来重命名副本
  • 打开zip by并打开model.xml文件(使用7-zip打开zip,然后双击在记事本中打开xml。编辑并保存)
  • 更改属性Name=“Collation”Value=“拉丁语1\u常规\u CS\u AS”
  • 将zip重新命名为bacpac
  • bacpac确实包含用于验证包的校验和。这需要更新。第四,该实用程序有一个git副本。只需对新的bacpac运行即可获得校验和值
  • 将bacpac重新命名为zip
  • 在zip中,打开origin.xml并更新校验和
  • 将zip重新命名为bacpac
  • 请再次尝试导入
    以下是Microsoft技术支持人员引导我使用命令行导出、修改和创建新数据库的过程。此方法有效,而使用SSMS的等效过程导致错误842

  • 导出:
    sqlpackage.exe/Action:Export/ssn:{database server}.database.windows.net/sdn:{database}/su:{user name}/sp:{password}/tf:{local bacpac path}

  • .bacpac
    文件重命名为以
    .zip
    结尾

  • 从zip
    model.xml
    Origin.xml
    中提取

  • model.xml
    中,编辑
    DataSchemaModel/model/Element[Type=“SqlDatabaseOptions”]/Property[Name=“Collation”]

  • 将下面的脚本保存到
    hash.ps1
    ,然后从PowerShell运行
    hash.ps1
    。出现提示时,指定
    model.xml
    的路径。脚本将打印
    model.xml
    的哈希值

  • Origin.xml
    中,使用新哈希更新
    DacOrigin/Checksums/Checksum[Uri=“/model.xml”]

  • 使用更新的
    model.xml
    Origin.xml
    文件更新zip

  • 将zip文件重命名回
    .bacpac

  • 导入:
    sqlpackage.exe/Action:Import/tsn:{database server}.database.windows.net/tdn:{database}/tu:{user name}/tp:{password}/sf:{local bacpac path}/p:DatabaseEdition=Standard/p:DatabaseServiceObjective=S1

    使用与您的工作量相匹配的数据库版本和服务目标来代替标准版和S1版


  • hash.ps1
    $modelXmlPath=读取主机“model.xml文件路径”
    $hasher=[System.Security.Cryptography.HashAlgorithm]::Create(“System.Security.Cryptography.SHA256CryptoServiceProvider”)
    $fileStream=New Object System.IO.fileStream-ArgumentList@($modelXmlPath[System.IO.FileMode]::Open)
    $hash=$hasher.ComputeHash($fileStream)
    $hashString=“”
    Foreach($hash中的b){$hashString+=$b.ToString(“X2”)}
    $fileStream.Close()
    $hashString
    
    如果要更改数据库的排序规则,应创建一个票证。支持团队将在合理的时间内为您完成这项工作。只需对步骤7进行说明,使用“计算”而不是“存储”,它就能完美工作!不要压缩并使用dacchksum.exe运行此脚本$modelXmlPath=“path2model\model.xml”$hasher=[System.Security.Cryptography.HashAlgorithm]::Create(“System.Security.Cryptography.SHA256CryptoServiceProvider”)$fileStream=new object System.IO.fileStream`-ArgumentList@($modelXmlPath[System.IO.FileMode]::Open)$hash=$hasher.ComputeHash($fileStream)$hashString=”“Foreach($hash中的b){$hashString+=$b.ToString(“X2”)}$fileStream.Close()$hashString update Orgin.xml和zip