Estamos usando o banco de dados SQL Server 2017 CU23 Standard Edition atualizado com "SQL_Latin1_General_CP1_CI_AS". Agora, quero alterar todos os bancos de dados do sistema (master , model , temp, msdb) para outro agrupamento. como mudar isso sem instalar o SQL Server?
obrigado,
A única maneira de alterar o agrupamento para a própria instância (bancos de dados de nível de instância e do sistema mais bancos de dados do usuário) sem reinstalar é um comando/opção não documentado. A opção "reconstruindo bancos de dados do sistema" mencionada nas outras respostas está efetivamente reinstalando, mesmo que não seja no sentido literal, nem essa abordagem atualiza nenhum banco de dados do usuário para corresponder ao novo agrupamento.
Publiquei uma análise detalhada dessa abordagem não documentada e as implicações de fazer qualquer alteração de agrupamento em uma instância e/ou banco de dados aqui:
Alterando o agrupamento da instância, os bancos de dados e todas as colunas em todos os bancos de dados do usuário: o que pode dar errado?
Existem algumas áreas que podem ser afetadas, e isso depende muito se você está falando sobre apenas um banco de dados específico, ou a instância e um ou mais bancos de dados nessa instância, e se você possui
VARCHAR
dados contendo caracteres com valores de 128 - 255, e se você estiver alternando as sensibilidades (por exemplo, diferencia maiúsculas de minúsculas para maiúsculas e minúsculas ou vice-versa).Sobre a
ALTER DATABASE ... COLLATE ...
opção:sys.objects
,sys.schemas
, , etc); não altera nenhuma tabela de usuário (colunas ou índices)Os Manuais Online da Microsoft para definir ou alterar o agrupamento de banco de dados explicam como fazer isso, especificamente como no SSMS na seção Usando o SQL Server Management Studio . Alternativamente, você pode criar um script assim:
Se nenhuma dessas opções funcionar para bancos de dados do sistema, não será possível fazer isso sem executar o instalador ou reconstruir os bancos de dados do sistema .
De qualquer forma, aconselho ter cuidado ao alterar o agrupamento dos bancos de dados do sistema, pois você pode ter vários problemas se não for feito corretamente. Por exemplo, um agrupamento que diferencia maiúsculas de minúsculas que precisa interagir com um contexto que não diferencia maiúsculas de minúsculas pode entrar em conflito e produzir erros. Também usar a
COLLATE
função para comparar entre dois contextos de agrupamento diferentes pode resultar em problemas de estimativa de cardinalidade .Além disso, observe que, se você definir o
model
banco de dados para um agrupamento diferente do agrupamento do servidor, todos os bancos de dados recém-criados terão o mesmo agrupamento do banco de dados e ignorarão o agrupamentomodel
do servidor .Você pode alterar o agrupamento do banco de dados da instância e do sistema com a ação de reconstrução do banco de dados de configuração . Isso recriará os bancos de dados do sistema com o agrupamento especificado sem reinstalar os binários. Os bancos de dados do sistema após a reconstrução serão essencialmente uma nova instalação, portanto, quaisquer alterações nos objetos do sistema (logins, trabalhos etc.) serão perdidas.