Published on

March 21, 2017

Понимание конфликта сортировки SQL Server

Если вы когда-либо сталкивались с сообщением об ошибке вроде “Не удается разрешить конфликт сортировки между ‘SQL_Latin1_General_CP1_CI_AS’ и ‘Latin1_General_CI_AS’ в операции равенства” в SQL Server, то вы знаете, насколько это может быть раздражающе. Эта ошибка возникает, когда сортировка вашего сервера отличается от сортировки вашей базы данных. Но не волнуйтесь, есть решение!

С помощью модуля dbatools вы можете быстро проверить, соответствует ли сортировка вашего сервера сортировке вашей базы данных. Команда Test-DbaDatabaseCollation – это удобный инструмент, который может помочь вам выявить любые конфликты сортировки. Давайте посмотрим, как его использовать.

Установка

Если вы еще не установили модуль dbatools, вы можете сделать это, следуя этим шагам:

  1. Откройте PowerShell
  2. Выполните команду: Install-Module dbatools

Проверка сортировки

После установки модуля dbatools вы можете начать проверять сортировку с помощью команды Test-DbaDatabaseCollation. Вот несколько примеров:

# Проверка сортировки для определенного SQL Server
Test-DbaDatabaseCollation -SqlServer ИмяSQLСервера

# Проверка сортировки для нескольких SQL Server
$SQLServers = "SQLServer1", "SQLServer2", "SQLServer3"
Test-DbaDatabaseCollation -SqlServer $SQLServers

Команда Test-DbaDatabaseCollation предоставит вам простой вывод, показывающий имя сервера, имя базы данных и свойство IsEqual. Если свойство IsEqual равно false, это означает, что сортировка базы данных не соответствует сортировке сервера.

Если вам нужна более подробная информация, вы можете использовать параметр -Detailed:

Test-DbaDatabaseCollation -SqlServer ИмяSQLСервера -Detailed

Это позволит вам получить имя сервера, сортировку сервера, имя базы данных, сортировку базы данных и свойство IsEqual. Вы даже можете сохранить вывод в файл или экспортировать его в CSV или JSON для дальнейшего анализа.

Использование Pester для проверки сортировки

Если вы хотите автоматизировать проверку сортировки для нескольких серверов и баз данных, вы можете использовать Pester. Pester – это тестовый фреймворк для PowerShell, который позволяет вам писать и запускать тесты. Вот пример того, как вы можете использовать Pester для проверки сортировки:

Describe "Проверка сортировки базы данных" {
    $SQLServers = "SQLServer1", "SQLServer2", "SQLServer3"
    foreach($Server in $SQLServers)
    {
        $CollationTests = Test-DbaDatabaseCollation -SqlServer $Server -Detailed
        foreach($CollationTest in $CollationTests)
        {
            It "$($CollationTest.Server) база данных $($CollationTest.Database) должна иметь правильную сортировку $($CollationTest.ServerCollation)" {
                $CollationTest.DatabaseCollation | Should Be $CollationTest.ServerCollation
            }
        }
    }
}

В этом примере мы перебираем список SQL-серверов и их баз данных и проверяем, соответствует ли сортировка каждой базы данных сортировке сервера. Pester предоставит вам подробную информацию о любых несоответствиях сортировки.

Сочетая команду Test-DbaDatabaseCollation с Pester, вы легко можете выявить и устранить конфликты сортировки в вашей среде SQL Server.

Надеюсь, этот пост показал вам, как использовать команду Test-DbaDatabaseCollation из модуля dbatools для проверки ваших серверов и баз данных на конфликты сортировки. Если у вас есть вопросы, не стесняйтесь задавать их в канале dbatools в сообществе SQL Community Slack.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.