Como posso alterar o agrupamento padrão do SQL Server 2008 R2 Express para todo o servidor e um banco de dados específico?
Existe uma maneira de fazer isso usando a interface visual do SQL Server Management Studio? Na janela Propriedades do Servidor (e na janela Propriedades do Banco de Dados correspondente), esta propriedade não está disponível para edição.
Sim.
Você pode alterar o agrupamento padrão da instância expressa do SQL Server 2008 R2 e bancos de dados individuais, mas é uma tarefa complexa.
Infelizmente, não há opção visual para fazê-lo via SSMS.
Configurando e alterando o agrupamento de servidores - SQL Server 2008
Certifique-se de ter todas as informações ou scripts necessários para recriar seus bancos de dados de usuário e todos os objetos neles.
Exporte todos os seus dados usando uma ferramenta como o utilitário bcp. Para obter mais informações, consulte Importar e exportar dados em massa.
Elimine todos os bancos de dados do usuário.
Reconstrua o banco de dados mestre especificando o novo agrupamento na propriedade SQLCOLLATION do comando setup
Crie todos os bancos de dados e todos os objetos neles.
Importe todos os seus dados.
Configurando e alterando o agrupamento de banco de dados - SQL Server 2008
Defina a
COLLATION
opção naCREATE DATABASE
instrução ao criar um novo banco de dados.Da mesma forma, defina as
COLLATION
opções naALTER DATABASE
instrução para alterar o agrupamento de um banco de dados existente.ALTER DATABASE [database_name] COLLATE SQL_Latin1_General_CP1_CI_AS;
Configurando e alterando o agrupamento de colunas
Certifique-se de que você realmente deseja "descartar" os bancos de dados do usuário, conforme observado na resposta acima. Você pode apenas querer "desanexar" os bancos de dados. Ou, na verdade, você não pode fazer nada, pois a reconstrução do mestre remove efetivamente todos os links para os bancos de dados do usuário. Há momentos em que os bancos de dados são criados no agrupamento desejado, mas o servidor não. Você não gostaria de ter que recuperar todos os seus bancos de dados de usuários de backups neste caso.
Eu fiz algo assim e funcionou, mas você deve ter em mente que os índices que estão apontando para o tipo de dados como text/varchar/nvarchar devem ser descartados, execute o script e crie os índices.
esta é minha primeira resposta postada desculpe minha bagunça
Exportar todos os dados (incluindo logins, servidores vinculados, trabalhos do SQL Agent, configurações do DB Mail etc.) e reconstruir os dados no nível da instância, além de recarregar todos os dados do usuário, é muito trabalhoso. E, mesmo depois de tudo isso, ainda não há garantia de que você possa atualizar o agrupamento padrão de um banco de dados via
ALTER DATABASE
porque existem várias condições que impedirão a conclusão da operação (consulte a seção "Alterando o agrupamento do banco de dados" daALTER DATABASE
documentação para obter detalhes) .Existe, no entanto, um método não documentado que é muito mais fácil. A principal desvantagem é que não é suportado. Isso não quer dizer que algo vai dar errado, apenas que, se algo acontecer, a Microsoft não ajudará a corrigi-lo (porque eles nunca garantiram que funcionaria).
O método de que falo está sendo executado
sqlservr.exe
com o-q {new_collation_name}
switch. Há um pouco mais do que isso, mas essa é a ideia básica. Esse método simplesmente atualiza os metadados do sistema, o que traz benefícios e consequências, sendo os principais:BENEFÍCIOS
ALTER DATABASE
de trabalharDESVANTAGENS
VARCHAR
os dados podem mudar, SE a página de código for diferente entre os agrupamentos antigo e novo, e existirem caracteres com valores de 128 - 255 (0x80 - 0xFF) e esses caracteres não existirem como o mesmo caractere com o mesmo valor no novo código página. Portanto, existe o potencial de perda de dados, e seus dados precisam ser pesquisados primeiro para garantir que essa condição não exista. Mas isso também significa que há muitos casos com apenas caracteres com valores de 0 a 127 que não estão em perigo, mesmo que a página de código seja alterada.Para uma descrição detalhada do que o
sqlservr.exe -q
método faz e não faz (incluindo detalhes sobre como os agrupamentos funcionam nos vários níveis e possíveis problemas a serem observados), consulte minha postagem: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?
Para alterar apenas a instância (incluindo os bancos de dados do sistema:
master
,model
,msdb
etempdb
) e um ou mais bancos de dados (mas não todos os bancos de dados), basta desanexar o(s) banco(s) de dados que você deseja excluir desta operação e, em seguida, reanexá-los assim que a atualização do agrupamento for concluída.