Guest Cleirton Postado Outubro 17, 2008 Denunciar Share Postado Outubro 17, 2008 Pessoal, como faço para Altera Ordem de Campo em Tabela Criada no Sql Server 2000? Via Script SQL.Alguém poderia mim ajudar? já procurei uma diversidade de script mas não consigo encontrar-lo.Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 17, 2008 Denunciar Share Postado Outubro 17, 2008 é quando tentei fazer isso certa vez tb não consegui. no mysql sei q da pra fazer facil no alter table, mas no sql parece q não da.mas tipo, o q acontece é q na hora do select você escolhe a ordem dos campos, então isso não afeta mta coisa. e você sempre pode abrir o design no manager e mudar na mao.mas seila, ainda acho q devia te um jeito por query, se eu descobrir posto aqui. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Cleirton Postado Outubro 17, 2008 Denunciar Share Postado Outubro 17, 2008 Kuroi, belezaPois he, sei que pelo EnterpriseManager dá pra fazer facim, assim como, sei que posso montar a estrutura de Select conforme quero que os campos aparecam.No entanto, trabalho em uma grande instituição financeira no qual possui em torno de 330 servidores distribuidos e infelizmente em alguns database de alguns servidores alguém criou a Tabela com a ordem dos campos errados causando impactos em algum processos nossos.Quando quero fazer uma manutenção em uma trigger por exemplo, tenho que verificar qual servidor esta errado a estrutura da tabela com os demais, dessa forma fica um trabalho ardou.Então, preciso de um script para ser executado em todos os database dos servidor existentes para que as ordens dos campo fiquem Iguais, assim, facilitando os trabalhos posteriores. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jefferson Alves Postado Outubro 22, 2008 Denunciar Share Postado Outubro 22, 2008 Boa tarde,Estive pesquisando sobre o assunto e descobri que a mudança de informações no catálogo, a partir do SQL2005 não está mais acessível de forma tão fácil como antes.Vale a pena dar uma olhada nos links abaixo:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=105032http://www.mssqltips.com/tip.asp?tip=1274ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/993e0820-17f2-4c43-880c-d38290bf7abc.htmRecomendo também pesquisar no Google da seguinte forma:SQL SERVER 2005 "Ad hoc updates to system catalogs are not allowed" ERRORSQL SERVER "Msg 259" CHANGE COLUMNS ORDER ERRORLogo abaixo está a opinião de um colega DBA sobre o assunto e a seguir um exemplo de código para implementar isso de outra maneira, a criação de uma tabela temporária, a transferência dos valores e a recriação da tabela original.Palavra de DBA:No SQL Server 2005 (teoricamente) não é permitida a atualização do catálogo, ouseja, diferente de outras versões que era possível atualizar o dicionário de dadosbastando configurar o servidor para tal.Você notou que os valores do campo identity são armazenados no dicionário.Desta forma, existe uma maneira para atualizar o catálogo iniciando o SQL Server nomodo single-user. Antes de realizar a operação deve-se realizar o backup dos bancos,principalmente do master.Verifique no books online tratamentos para colunas identity tipo "SETIDENTITY_INSERT"... ou algo parecido. Geralmente colunas identity são ou fazem partede chave única e, por isso, acredita-se não sofrer alterações embora, como sabe,muitas vezes é preciso atualizar estes valores.Se eu tiver outra sugestão lhe informo./* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/BEGIN TRANSACTIONSET QUOTED_IDENTIFIER ONSET ARITHABORT ONSET NUMERIC_ROUNDABORT OFFSET CONCAT_NULL_YIELDS_NULL ONSET ANSI_NULLS ONSET ANSI_PADDING ONSET ANSI_WARNINGS ONCOMMITBEGIN TRANSACTIONGOCREATE TABLE dbo.Tmp_EXTERNA2 ( COD int NOT NULL IDENTITY (1, 1), USERNAME varchar(20) NULL, LASTUPDATE datetime NULL ) ON [PRIMARY]GOSET IDENTITY_INSERT dbo.Tmp_EXTERNA2 ONGOIF EXISTS(SELECT * FROM dbo.EXTERNA2) EXEC('INSERT INTO dbo.Tmp_EXTERNA2 (COD, LASTUPDATE, USERNAME) SELECT COD, LASTUPDATE, USERNAME FROM dbo.EXTERNA2 WITH (HOLDLOCK TABLOCKX)')GOSET IDENTITY_INSERT dbo.Tmp_EXTERNA2 OFFGODROP TABLE dbo.EXTERNA2GOEXECUTE sp_rename N'dbo.Tmp_EXTERNA2', N'EXTERNA2', 'OBJECT' GOCOMMITBom, senão ajudei em muita coisa, espero ao menos não ter atrapalhado. :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Cleirton Postado Novembro 7, 2008 Denunciar Share Postado Novembro 7, 2008 Obrigado, Jefferson Mas como informei, estou usando sql sever 2000 e não o 2005De qualauer forma obrigado pelas digas.Irei fazer da forma mais dificel mesmo, copiar os dados para uma tabela Temporia - recriar a tabela depois importar os dados novamente.obrigado a todos.Boa tarde,Estive pesquisando sobre o assunto e descobri que a mudança de informações no catálogo, a partir do SQL2005 não está mais acessível de forma tão fácil como antes.Vale a pena dar uma olhada nos links abaixo:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=105032http://www.mssqltips.com/tip.asp?tip=1274ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/udb9/html/993e0820-17f2-4c43-880c-d38290bf7abc.htmRecomendo também pesquisar no Google da seguinte forma:SQL SERVER 2005 "Ad hoc updates to system catalogs are not allowed" ERRORSQL SERVER "Msg 259" CHANGE COLUMNS ORDER ERRORLogo abaixo está a opinião de um colega DBA sobre o assunto e a seguir um exemplo de código para implementar isso de outra maneira, a criação de uma tabela temporária, a transferência dos valores e a recriação da tabela original.Palavra de DBA:No SQL Server 2005 (teoricamente) não é permitida a atualização do catálogo, ouseja, diferente de outras versões que era possível atualizar o dicionário de dadosbastando configurar o servidor para tal.Você notou que os valores do campo identity são armazenados no dicionário.Desta forma, existe uma maneira para atualizar o catálogo iniciando o SQL Server nomodo single-user. Antes de realizar a operação deve-se realizar o backup dos bancos,principalmente do master.Verifique no books online tratamentos para colunas identity tipo "SETIDENTITY_INSERT"... ou algo parecido. Geralmente colunas identity são ou fazem partede chave única e, por isso, acredita-se não sofrer alterações embora, como sabe,muitas vezes é preciso atualizar estes valores.Se eu tiver outra sugestão lhe informo./* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/BEGIN TRANSACTIONSET QUOTED_IDENTIFIER ONSET ARITHABORT ONSET NUMERIC_ROUNDABORT OFFSET CONCAT_NULL_YIELDS_NULL ONSET ANSI_NULLS ONSET ANSI_PADDING ONSET ANSI_WARNINGS ONCOMMITBEGIN TRANSACTIONGOCREATE TABLE dbo.Tmp_EXTERNA2 ( COD int NOT NULL IDENTITY (1, 1), USERNAME varchar(20) NULL, LASTUPDATE datetime NULL ) ON [PRIMARY]GOSET IDENTITY_INSERT dbo.Tmp_EXTERNA2 ONGOIF EXISTS(SELECT * FROM dbo.EXTERNA2) EXEC('INSERT INTO dbo.Tmp_EXTERNA2 (COD, LASTUPDATE, USERNAME) SELECT COD, LASTUPDATE, USERNAME FROM dbo.EXTERNA2 WITH (HOLDLOCK TABLOCKX)')GOSET IDENTITY_INSERT dbo.Tmp_EXTERNA2 OFFGODROP TABLE dbo.EXTERNA2GOEXECUTE sp_rename N'dbo.Tmp_EXTERNA2', N'EXTERNA2', 'OBJECT' GOCOMMITBom, senão ajudei em muita coisa, espero ao menos não ter atrapalhado. :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Cleirton
Pessoal,
como faço para Altera Ordem de Campo em Tabela Criada no Sql Server 2000? Via Script SQL.
Alguém poderia mim ajudar? já procurei uma diversidade de script mas não consigo encontrar-lo.
Grato.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.