Janeiro 28, 2022

{coding}Sight

quando você desenvolve um aplicativo ou escreve um código no sistema de banco de dados SQL, é crucial entender como os dados serão classificados e comparados. Você pode armazenar seus dados em um idioma específico ou pode querer que o SQL Server trate dados sensíveis a maiúsculas e minúsculas separadamente. A Microsoft forneceu uma configuração do SQL Server chamada agrupamento para controlar e atender a esses requisitos.

o que é agrupamento no SQL Server?

podemos definir o agrupamento em vários níveis no SQL Server, conforme fornecido abaixo.

  • Servidor
  • Banco de dados
  • Nível de Coluna
  • Nível de Expressão

O agrupamento de nível de Servidor, às vezes, pode ser chamado de Instância do SQL Server nível de agrupamento.

o agrupamento de nível do banco de dados será herdado da configuração de agrupamento de nível do servidor se você não escolher nenhum agrupamento específico durante a criação do banco de dados. Você também pode alterar o agrupamento no nível do banco de dados posteriormente. Observe que a alteração do Agrupamento de banco de dados será aplicada apenas a objetos futuros ou novos que serão criados após a alteração do Agrupamento.

o novo agrupamento não modificará os dados existentes armazenados em tabelas que foram classificadas com o último tipo de agrupamento. A equipe do aplicativo precisa de mais planejamento para lidar com essa conversão de dados armazenados devido à nova configuração de agrupamento.

existem várias maneiras de fazer isso. Uma delas é copiar os dados da tabela existente para uma nova tabela criada com o novo agrupamento e, em seguida, substituir a tabela antiga pela nova. Você também pode mover os dados da tabela para um novo banco de dados com um novo agrupamento e substituir o banco de dados antigo pelo novo.

nota: alterar o agrupamento é uma tarefa complexa e você deve evitá-lo, a menos que tenha um caso comercial obrigatório.

como encontrar e alterar o Agrupamento de banco de dados no SQL Server?Vamos em frente e verificar o agrupamento de instância do SQL Server e todos os bancos de dados hospedados nessa instância. Você pode verificar o agrupamento acessando a janela Propriedades de nível de banco de dados ou instância usando o SQL Server Management Studio ou simplesmente executando a instrução T-SQL abaixo. O agrupamento para cada banco de dados é armazenado no System object sys.bancos de dados-vamos acessá-lo para obter essas informações.

--Check Database CollationSELECT name, collation_name FROM sys.databases GO --Check Server or Instance level CollationSELECT SERVERPROPERTY('Collation') As 

executei a instrução T-SQL acima e obtive a saída abaixo. Podemos ver que todos os bancos de dados e agrupamento no nível do servidor têm as mesmas configurações que SQL_Latin1_General_CP1_CI_AS. Isso significa que os agrupamentos de banco de dados foram herdados pelo agrupamento no nível do servidor ao criá-los e o valor padrão não foi alterado.

Saída da Instrução T-SQL de execução

Agora, deixe-me mostrar a você como verificar o agrupamento de banco de dados usando o GUI no SQL Server Management Studio.Primeiro, conecte-se à sua instância do SQL Server usando o SQL Server Management Studio. Expanda o nó de instância seguido pela pasta bancos de dados. Clique com o botão direito do mouse no banco de dados de destino e escolha Propriedades:

escolha Propriedades no banco de dados de destino

você obterá a janela Propriedades do banco de dados abaixo.

agora clique na guia Opções no painel do lado esquerdo. Você obterá várias configurações de Propriedades no painel do lado direito. Collation é a primeira propriedade desta página-você pode ver que é o mesmo que era no script T-SQL acima.

da mesma forma, você pode clicar no nó de instância do SQL Server e clicar com o botão direito do mouse nas propriedades de nível de instância para ver o agrupamento de nível de servidor.

agrupamento no nível do servidor

se você quiser alterar esse agrupamento para um novo agrupamento, basta clicar no menu suspenso agrupamento e escolher a opção necessária. Certifique-se de ter feito um backup completo do seu banco de dados antes de fazê-lo.

alterar o agrupamento para um novo

eu escolhi um semelhante agrupamento com sensível a maiúsculas e minúsculas SQL_Latin1_General_CP1_CS_AS para este banco de dados e clicar em OK para aplicá-lo. Notar: Certifique-se de que ninguém esteja conectado ao banco de dados de destino durante este procedimento, caso contrário, você precisará alternar o modo para um único usuário e alterar essa configuração.

propriedades de Banco de dados

Você também pode alterar este agrupamento de banco de dados usando a instrução T-SQL. Para isso, use a cláusula COLLATE da instrução ALTER DATABASE.

primeiro, mudamos o banco de dados para o modo de usuário único, depois mudamos o agrupamento e, finalmente, movemos o banco de dados para o modo multiusuário.

--Change Database Collation using T-SQL USE master; GO Alter DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GOAlter DATABASE SET MULTI_USER

Liste todas as colações suportadas no SQL Server

esta seção mostrará como encontrar todas as colações disponíveis no SQL Server. Primeiro, deixe-me mostrar como obter a lista de todos os agrupamentos suportados para a instância do SQL Server.

SQL Server tem uma função de Sistema chamada fn_helpcollations () que você pode usar para buscar todas as colações.

execute o comando abaixo para exibir a lista.

--Display the list of all collations SELECT name, description FROM fn_helpcollations()

podemos ver todas as 5508 colações suportadas na seção de saída. Se você não tiver certeza de qual agrupamento escolher, poderá usar a cláusula WHERE no script abaixo para filtrar todas as colações possíveis que podem ser definidas no banco de dados.

todas as edições de agrupamentos

digamos que você precisa para armazenar seus dados no idioma inglês e deseja que o SQL Server para lidar com ele em um caso-sensível formato. Você pode usar o comando abaixo para buscar a lista de colações possíveis e suportadas para sua consulta:

--Display the list of all collations with WHERE clause SELECT Name, Description FROM fn_helpcollations() WHERE Name like 'SQL_Latin1%' AND Description LIKE '%case-sensitive%'

a saída mostra apenas 10 colações que satisfazem sua consulta. Você pode usar o script acima para filtrar várias colações.

filtragem de agrupamentos

Impacto da Mudança de Agrupamento de Banco de dados na Saída da Consulta

nesta seção, vou mostrar para você a diferença entre as duas saídas da mesma consulta quando eles são executados com diferentes agrupamentos.

primeiro, vou criar um banco de dados chamado MSSQL com um agrupamento (SQL_Latin1_General_CP1_CS_AS). Então eu executarei a mesma consulta duas vezes para obter a saída. Mais tarde, alterarei o agrupamento para SQL_Latin1_General_CP1_CI_AS e executarei novamente as mesmas consultas para obter sua saída. Você pode comparar as duas saídas e entender o impacto da alteração de um agrupamento de banco de dados. Então, vamos começar com a criação de banco de dados.

inicie a nova janela de criação de banco de dados, conforme mostrado na imagem abaixo. Você também pode criar este banco de dados usando T-SQL. Depois disso, você pode ver o nome do banco de dados e seus arquivos de dados. Agora, clique na segunda guia no painel do lado esquerdo para alternar para a janela de propriedade de agrupamento.

o lançamento de uma nova janela de criação de banco de dados

Você pode ver que o nome de agrupamento para este banco de dados é o padrão. Isso significa que esse banco de dados herdará o agrupamento do tipo de agrupamento no nível do servidor. Clique no menu suspenso agrupamento para escolher seu novo agrupamento.

escolhendo novo agrupamento

selecionei o agrupamento abaixo SQL_Latin1_General_CP1_CS_AS para este banco de dados – não o padrão. Clique em OK para prosseguir com a criação do banco de dados.

escolhendo o novo agrupamento

Agora, verifique o agrupamento de banco de dados para um recém-criado banco de dados. Podemos ver que é SQL_Latin1_General_CP1_CS_AS como selecionamos na etapa anterior.

verificar o agrupamento de banco de dados para recém-criado banco de dados

Em SQL_Latin1_General_CP1_CS_AS, CS representa o modo maiúsculo, e CI representa o case-insensitive modo. Agora você pode executar o código T-SQL abaixo ou qualquer código para obter a saída.

executei o mesmo comando duas vezes. O primeiro script filtra os nomes das colunas com um sys de valor em letras maiúsculas, enquanto o segundo script filtrará a mesma coluna com o mesmo sys de valor em letras minúsculas. A seção de saída demonstra que o primeiro script não mostrou nenhuma saída, enquanto o segundo script exibiu a saída por causa de seu comportamento sensível a maiúsculas e minúsculas.

Select * from sysusersWhere name='SYS'GoSelect * from sysusersWhere name='sys'GO
Impacto da Mudança de Agrupamento de Banco de dados na Saída da Consulta

Agora, vamos alterar o agrupamento de banco de dados para o caso de agrupamento de diferenciação SQL_Latin1_General_CP1_CI_AS executando o abaixo instruções T-SQL. Você também pode alterá-lo via GUI acessando a janela Propriedades do banco de dados no SQL Server Management Studio.

--Change database collation to SQL_Latin1_General_CP1_CI_ASUSE master; GO Alter DATABASE SET SINGLE_USER WITH ROLLBACK IMMEDIATEGOALTER DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS; GOAlter DATABASE SET MULTI_USER

eu executei o script acima em um tiro, e o agrupamento de banco de dados foi alterado com sucesso para um novo agrupamento com suporte case-insensitive.

novo agrupamento tendo case-insensitive suporte

Você pode verificar essa alteração executando o abaixo scripts para verificar o agrupamento do recém-criado banco de dados MSSQL. Podemos ver que o novo agrupamento está definido para este banco de dados na imagem abaixo.

novo agrupamento estiver definido para o banco de dados

Vamos executar a mesma instrução T-SQL antes de alterar o agrupamento para ver o impacto desta alteração. Como podemos ver agora, ambas as instruções T-SQL estão na saída.

Impacto da Mudança de Agrupamento de Banco de dados na Saída da Consulta

Conclusão

espero é evidente que o agrupamento em SQL Server é crucial. Definimos o impacto que isso deixa se você fizer alterações no agrupamento em qualquer nível no SQL Server. Sempre faça o planejamento adequado e teste as modificações em seu ambiente de ciclo de vida inferior primeiro.

fique atento ao meu próximo artigo, onde mostrarei um método passo a passo para alterar o agrupamento no nível do servidor.

Deixe uma resposta

O seu endereço de email não será publicado.