Como eu poderia 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), essa propriedade não está disponível para edição.
Respostas:
Sim.
Você pode alterar o agrupamento padrão da instância expressa do SQL Server 2008 R2 e dos bancos de dados individuais, mas é uma tarefa complexa.
Infelizmente, não há opção visual para fazê-lo via SSMS.
Definindo e alterando o agrupamento de servidores - SQL Server 2008
Verifique se você possui todas as informações ou scripts necessários para recriar seus bancos de dados de usuários e todos os objetos neles.
Exporte todos os seus dados usando uma ferramenta como o utilitário bcp. Para obter mais informações, consulte Importando e exportando dados em massa.
Solte todos os bancos de dados do usuário.
Recrie 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.
Definindo e alterando o agrupamento de banco de dados - SQL Server 2008
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;
Definindo e alterando o agrupamento de colunas
fonte
Certifique-se de que 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 quaisquer 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 recuperar todos os seus bancos de dados de usuários de backups neste caso.
fonte
Fiz algo assim e funcionou, mas você deve ter em mente que os índices que apontam para o tipo de dados, como texto / varchar / nvarchar, devem ser eliminados, executar o script e criar os índices.
esta é a minha primeira resposta postada perdão minha bagunça
fonte
Exportar todos os dados (incluindo logins, servidores vinculados, tarefas 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,
ALTER DATABASE
pois existem várias condições que impedirão a conclusão da operação (consulte a seção "Alterando oALTER DATABASE
agrupamento do banco de dados" da documentação para obter detalhes) .Há, no entanto, um método não documentado que é muito mais fácil. A principal desvantagem é que não há suporte. Isso não quer dizer que algo dê 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 idéia básica. Este método simplesmente atualiza os metadados do sistema, que traz benefícios e consequências, sendo os principais:BENEFÍCIOS
ALTER DATABASE
trabalhoDRAWBACKS
VARCHAR
os dados podem mudar, SE a página de código for diferente entre os agrupamentos antigos e novos e existirem caracteres com valores de 128 a 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. Porém, isso também significa que há muitos casos com apenas caracteres com valores de 0 a 127 que não correm risco, mesmo que a página de códigos seja alterada.Para obter uma descrição detalhada do que o
sqlservr.exe -q
método faz e o que não faz (incluindo detalhes sobre como os agrupamentos funcionam nos vários níveis e possíveis problemas a serem observados), consulte meu post:Alterando o agrupamento da instância, dos bancos de dados e de 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), simplesmente desanexar o banco de dados (s) que deseja excluir esta operação, e então re-anexá-los assim que a atualização do agrupamento for concluída.fonte