Erro ao executar comando SQL Server 2008

04/05/2021

8

Olá pessoal estou com um problema já faz um tempo.

Preciso rodar o seguinte script, mas não estou conseguindo pois esta dando um seguinte erro.

Script: UPDATE sys.columns SET system_type_id=61,user_type_id=61,max_length=8,precision=23,scale=3,is_nullable=1 WHERE system_type_id=42

Erro: Ad hoc updates to system catalogs are not allowed.

Já pesquisei e fiz de tudo e não encontrei uma saida.

Peço que me ajudem porfavor.

Já habilitei o DAC e executei dentro dele mas não funciona.

O que quero fazer é alterar todos os campos de um banco de dados que são do tipo decimal para o float.
Responder

Posts



https://www.mssqltips.com/sqlservertip/2875/how-to-allow-ad-hoc-updates-in-sql-server-system-catalogs/

opcao 1
Responder

05/05/2021

Chromusmaster

O que quero fazer é alterar todos os campos de um banco de dados que são do tipo decimal para o float.

Mas se tu quer alterar é só fazer um query dinâmica que gera os alters para as tabelas e depois rodar esses alter's gerados pela query.
Responder

05/05/2021

Daniel



https://www.mssqltips.com/sqlservertip/2875/how-to-allow-ad-hoc-updates-in-sql-server-system-catalogs/

opcao 1


Esse site já vi mas não resolveu.
Responder

05/05/2021

Daniel

O que quero fazer é alterar todos os campos de um banco de dados que são do tipo decimal para o float.

Mas se tu quer alterar é só fazer um query dinâmica que gera os alters para as tabelas e depois rodar esses alter's gerados pela query.


Vdd. Já fiz isso mas a query retornar Un erro dizendo que o campo é dependente do outro.
Responder

05/05/2021

Chromusmaster

O que quero fazer é alterar todos os campos de um banco de dados que são do tipo decimal para o float.

Mas se tu quer alterar é só fazer um query dinâmica que gera os alters para as tabelas e depois rodar esses alter's gerados pela query.


Vdd. Já fiz isso mas a query retornar Un erro dizendo que o campo é dependente do outro.


Você pode tentar fazer os alter usando o check constraint off:

-- Disable the constraints on a table called tableName:
ALTER TABLE tableName NOCHECK CONSTRAINT ALL

-- Execute the main alteration
ALTER TABLE tableName add column / change column.........

-- Re-enable the constraints on a table called tableName:
ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL

MAS MUITO CUIDADO! FAÇA ISSO PRIMEIRO EM BASE DE TESTES! SE AO FIZER ISSO O SISTEMA CONTINUAR FUNCIONANDO E NÃO QUEBRAR NADA FAÇA UM DUMP DA SUA BASE DE PRODUÇÃO E FAÇA NELA.

Responder

05/05/2021

Daniel

O que quero fazer é alterar todos os campos de um banco de dados que são do tipo decimal para o float.

Mas se tu quer alterar é só fazer um query dinâmica que gera os alters para as tabelas e depois rodar esses alter's gerados pela query.


Vdd. Já fiz isso mas a query retornar Un erro dizendo que o campo é dependente do outro.


Você pode tentar fazer os alter usando o check constraint off:

-- Disable the constraints on a table called tableName:
ALTER TABLE tableName NOCHECK CONSTRAINT ALL

-- Execute the main alteration
ALTER TABLE tableName add column / change column.........

-- Re-enable the constraints on a table called tableName:
ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL

MAS MUITO CUIDADO! FAÇA ISSO PRIMEIRO EM BASE DE TESTES! SE AO FIZER ISSO O SISTEMA CONTINUAR FUNCIONANDO E NÃO QUEBRAR NADA FAÇA UM DUMP DA SUA BASE DE PRODUÇÃO E FAÇA NELA.



sua dica é otima, mas deu o seguinte erro

eu rodei: ALTER TABLE agente NOCHECK CONSTRAINT DF__agente__taxa__108B795B

erro:

Msg 11415, Nível 16, Estado 1, Linha 1
O objeto 'DF__agente__taxa__108B795B' não pode ser desabilitado ou habilitado. Esta ação se aplica apenas a chaves estrangeiras e restrições de verificação.
Msg 4916, Nível 16, Estado 0, Linha 1
Não foi possível ativar ou desativar a restrição. Veja os erros anteriores.
Responder

12/05/2021

Chromusmaster

Você possui indices do tipo Unique nesta ou em outras tabelas?
Responder

12/05/2021

Daniel

Você possui indices do tipo Unique nesta ou em outras tabelas?


Sim.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar