Definir ou alterar a ordenação de banco de dados
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
Este artigo descreve como definir ou alterar a ordenação de banco de dados usando o SSMS (SQL Server Management Studio) ou o Transact-SQL.
Se nenhuma ordenação de banco de dados for especificada, será usada a ordenação do servidor.
Recomendações
Você pode encontrar os nomes de ordenação com suporte no Nome de Ordenação do Windows e no Nome de Ordenação do SQL Server ou pode usar a função do sistema sys.fn_helpcollations.
Ao alterar a ordenação do banco de dados, você altera:
Qualquer coluna char, varchar, text, nchar, nvarchar ou ntext nas tabelas do sistema são alteradas para a nova ordenação.
Todos os parâmetros char, varchar, text, nchar, nvarchar ou ntext e valores de retorno escalar para procedimentos armazenados e funções definidas pelo usuário existentes são alterados para a nova ordenação.
Os tipos de dados do sistema char, varchar, text, nchar, nvarchar ou ntext e todos os tipos de dados definidos pelo usuário com base nesses tipos de dados do sistema são alterados para a nova ordenação padrão.
Você pode alterar a ordenação de qualquer novo objeto que seja criado em um banco de dados de usuário usando a cláusula COLLATE
da instrução ALTER DATABASE. Essa instrução não altera a ordenação das colunas em nenhuma tabela existente definida pelo usuário. Isso pode ser alterado usando a cláusula COLLATE
de ALTER TABLE.
Permissões
A criação de um novo banco de dados exige a permissão CREATE DATABASE
no banco de dados master
ou as permissões CREATE ANY DATABASE
ou ALTER ANY DATABASE
.
A alteração da ordenação de um banco de dados existente requer a permissão ALTER
no banco de dados.
Definir ou alterar a ordenação de banco de dados
Você pode definir ou alterar a ordenação de banco de dados usando o SSMS (SQL Server Management Studio) ou o Transact-SQL (T-SQL).
Você pode especificar a ordenação de um novo banco de dados ou atualizar a ordenação de um banco de dados existente usando o SSMS (SQL Server Management Studio).
No SQL Server Management Studio, abra Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda-a e depois expanda Bancos de Dados:
- Para um novo banco de dados: clique com o botão direito do mouse em Bancos de dados e selecione Novo Banco de Dados. Se você não desejar a ordenação padrão, selecione a página Opções e uma ordenação na lista suspensa Ordenação.
- 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 Ordenação.
Dados após alterar a ordenação
Importante
Alterar a ordenação de um banco de dados ou de colunas individuais não modifica os dados subjacentes já armazenados em tabelas existentes. A menos que o seu aplicativo manipule explicitamente a conversão de dados e a comparação entre diferentes ordenações, é recomendável que você migre os dados existentes no banco de dados para a nova ordenação. Isso elimina o risco de que os aplicativos modifiquem incorretamente os dados, o que decorreria em possíveis resultados incorretos ou na perda de dados silenciosa.
Quando uma ordenação de banco de dados for alterada, somente as novas tabelas herdarão a nova ordenação de banco de dados por padrão. Há várias alternativas para converter dados existentes para a nova ordenação:
Converter os dados in-loco. Para converter a ordenação de uma coluna em uma tabela existente, confira Definir ou alterar a ordenação de colunas. Essa operação é fácil de implementar, mas pode se tornar um problema de bloqueio para grandes tabelas e aplicativos ocupados. Confira o seguinte exemplo de uma conversão in-loco da coluna
MyString
para uma nova ordenação:ALTER TABLE dbo.MyTable ALTER COLUMN MyString VARCHAR(50) COLLATE Latin1_General_100_CI_AI_SC_UTF8;
Copiar dados para novas tabelas que usam a nova ordenação e substitua as tabelas originais no mesmo banco de dados. Crie uma tabela no banco de dados atual que herdará a ordenação de banco de dados, copie os dados entre a tabela antiga e a nova tabela, remova a tabela original e renomeie a nova tabela com o nome da tabela original. Essa é uma operação mais rápida do que uma conversão in-loco, mas pode se tornar um desafio lidar com esquemas complexos com dependências como restrições de Chave Estrangeira, restrições de Chave Primária e Gatilhos. Ela também exigiria uma sincronização de dados final entre a nova tabela e a original antes do limiar final se os dados continuassem sendo alterados pelos aplicativos. Confira o seguinte exemplo de uma conversão "copiar e substituir" da coluna
MyString
em uma nova ordenação: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';
Copiar dados para um novo banco de dados que usa a nova ordenação e substitua o banco de dados original. Crie um banco de dados usando a nova ordenação e transfira os dados do banco de dados original com ferramentas como os serviços de integração ou o Assistente de Importação/Exportação no SQL Server Management Studio. Essa é uma abordagem mais simples para esquemas complexos. Ela também exigiria uma sincronização de dados final entre o novo banco de dados e o original antes do limiar final se os dados continuassem sendo alterados pelos aplicativos.
Limitações
As ordenações somente Unicode do Windows podem ser usadas somente com a cláusula COLLATE para aplicar ordenações aos tipos de dados nchar, nchar, nvarchar e ntext em dados nos níveis de coluna e de expressão. Não é possível usá-las com a cláusula COLLATE para alterar a ordenação de uma instância de banco de dados ou de servidor.
Se a ordenação especificada ou a ordenação usada pelo objeto referenciado usar uma página de código sem suporte no Windows, o Mecanismo de Banco de Dados exibirá um erro.
A ordenação em nível de servidor na Instância Gerenciada de SQL do Azure pode ser especificada quando a instância é criada e não pode ser alterada posteriormente. Saiba mais em Definir ou alterar a ordenação do servidor.
Importante
A instrução ALTER DATABASE COLLATE
não tem suporte no Banco de Dados SQL do Azure. Especifique a ordenação do banco de dados e a ordenação do catálogo no momento de CREATE DATABASE.
Conteúdo relacionado
- Suporte a ordenações e Unicode
- sys.fn_helpcollations (Transact-SQL)
- sys.databases (Transact-SQL)
- Nome de ordenação do SQL Server (Transact-SQL)
- Nome de ordenação do Windows (Transact-SQL)
- COLLATE (Transact-SQL)
- Precedência de ordenação
- CREATE TABLE (Transact-SQL)
- CREATE DATABASE
- ALTER TABLE (Transact-SQL)
- ALTER DATABASE (Transact-SQL)