Erro ao executar comando SQL Server 2008

04/05/2021

0

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.
Daniel

Daniel

Responder

Posts

04/05/2021

Emerson Nascimento



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, consulte nossa política de privacidade.

Aceitar