Partilhar via


Definir ou alterar o agrupamento do banco de dados

Aplica-se a:SQL ServerAzure SQL Managed Instance

Este artigo descreve como definir ou alterar o banco de dados agrupamento usando SQL Server Management Studio (SSMS) ou Transact-SQL.

Se nenhum agrupamento de banco de dados for especificado, o agrupamento do servidor será usado.

Recomendações

Você pode encontrar os nomes de agrupamento com suporte em Nome de Agrupamento do Windows e Nome de Agrupamento do SQL Server, ou pode usar a função de sistema sys.fn_helpcollations.

Ao alterar o agrupamento do banco de dados, você altera:

  • Qualquer coluna char, varchar, text, nchar, nvarcharou ntext em tabelas do sistema é alterada para o novo agrupamento.

  • Todos os parâmetros char, varchar, text, nchar, nvarcharou ntext existentes e os valores de retorno escalares para procedimentos armazenados e funções definidas pelo utilizador são modificados para a nova intercalação.

  • O char, varchar, text, nchar, nvarcharou ntext tipos de dados do sistema, e todos os tipos de dados definidos pelo usuário com base nesses tipos de dados do sistema, são alterados para o novo agrupamento padrão.

Você pode alterar o agrupamento de quaisquer novos objetos criados em um banco de dados de usuário usando a cláusula COLLATE da instrução ALTER DATABASE. Esta instrução não altera o agrupamento das colunas em quaisquer tabelas existentes definidas pelo utilizador. Estes podem ser alterados usando a cláusula COLLATE de ALTER TABLE.

Permissões

Para criar um novo banco de dados, você precisa da permissão CREATE DATABASE no banco de dados master ou na permissão CREATE ANY DATABASEou ALTER ANY DATABASE.

Para alterar o agrupamento de um banco de dados existente, você precisa da permissão ALTER no banco de dados.

Definir ou alterar o agrupamento do banco de dados

Você pode definir ou alterar o agrupamento de banco de dados usando o SQL Server Management Studio (SSMS) ou o Transact-SQL (T-SQL).

Você pode especificar o agrupamento para um novo banco de dados ou atualizar o agrupamento para um banco de dados existente usando o SQL Server Management Studio (SSMS).

No SQL Server Management Studio, abra Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server, expanda essa instância e expanda Bancos de Dados:

  • Para uma nova base de dados: Clique com o botão direito do rato Bases de Dados e, em seguida, selecione Nova Base de Dados. Se não quiser o agrupamento predefinido, selecione a página Opções e escolha um agrupamento na lista de opções Agrupamento.
  • Para um banco de dados existente: Clique com o botão direito do mouse no banco de dados desejado e selecione Propriedades. Selecione a página Opções e selecione uma ordenação na lista suspensa Agrupamento .

Dados depois de alterar o agrupamento

Importante

Alterar o agrupamento de um banco de dados ou colunas individuais não modifica os dados subjacentes já armazenados em tabelas existentes. A menos que seu aplicativo manipule explicitamente a conversão de dados e a comparação entre agrupamentos diferentes, é recomendável fazer a transição dos dados existentes no banco de dados para o novo agrupamento. Isso elimina o risco de que os aplicativos possam modificar dados incorretamente, resultando em possíveis resultados errados ou perda silenciosa de dados.

Quando um agrupamento de banco de dados é alterado, somente novas tabelas herdam o novo agrupamento de banco de dados por padrão. Existem várias alternativas para converter dados existentes para o novo agrupamento:

  • Converta os dados no próprio local. Para converter o agrupamento de uma coluna em uma tabela existente, consulte Definir ou alterar o agrupamento de colunas. Essa operação é fácil de implementar, mas pode se tornar um problema de bloqueio para tabelas grandes e aplicativos ocupados. Consulte o exemplo a seguir para obter uma conversão in-loco da coluna MyString para um novo agrupamento:

    ALTER TABLE dbo.MyTable
        ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
    
  • Copie dados para novas tabelas que usam o novo agrupamento e substitua tabelas originais no mesmo banco de dados. Crie uma nova tabela no banco de dados atual que herdará o agrupamento do banco de dados, copie os dados entre a tabela antiga e a nova tabela, solte a tabela original e renomeie a nova tabela para o nome da tabela original. Essa é uma operação mais rápida do que uma conversão no local, mas pode tornar-se um desafio ao lidar com esquemas complexos com dependências, como restrições de chave estrangeira, restrições de chave primária e disparadores. Também exigiria uma sincronização final de dados entre a tabela original e a nova antes do corte final, se os dados continuarem a ser alterados pelos aplicativos. Consulte o exemplo a seguir para uma conversão "copiar e substituir" da coluna MyString para um novo agrupamento:

    CREATE TABLE dbo.MyTable2 (MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8);
    
    INSERT INTO dbo.MyTable2
    SELECT * FROM dbo.MyTable;
    
    DROP TABLE dbo.MyTable;
    
    EXEC sp_rename 'dbo.MyTable2', 'dbo.MyTable';
    
  • Copie dados para um novo banco de dados que usa o novo agrupamento e substitua o banco de dados original. Crie um novo banco de dados usando o novo agrupamento e transfira os dados do banco de dados original por meio de ferramentas como o Integration Services ou o Assistente de Importação/Exportação no SQL Server Management Studio. Esta é uma abordagem mais simples para esquemas complexos. Também exigiria uma sincronização final de dados entre os bancos de dados originais e os novos antes do corte final, se os dados continuarem a ser alterados pelos aplicativos.

Limitações

  • As ordenações exclusivamente Unicode do Windows só podem ser usadas com a cláusula COLLATE para aplicar ordenações aos tipos de dados nchar, nvarchare ntext ao nível de coluna e de expressão. Eles não podem ser usados com a cláusula COLLATE para alterar o agrupamento de um banco de dados ou instância do servidor.

  • Se o agrupamento especificado ou o agrupamento usado pelo objeto referenciado usar uma página de código que não é suportada pelo Windows, o Mecanismo de Banco de Dados exibirá um erro.

  • O agrupamento no nível do servidor na Instância Gerenciada SQL do Azure pode ser especificado quando a instância é criada e não pode ser alterado posteriormente. Saiba mais em Configurar ou alterar o agrupamento do servidor.

Importante

A instrução ALTER DATABASE COLLATE não tem suporte no Banco de Dados SQL do Azure. Especifique o agrupamento de banco de dados e o agrupamento de catálogos no momento da CREATE DATABASE.