Pablo.Softgraf Posted August 8, 2017 Report Share Posted August 8, 2017 Senhores, boa tarde ! alguém já removeu algum index no SQLRDD ? foi criado com SET INDEX , criou normalmente, mas na hora de excluir, preciso exclui com o mesmo nome que foi criado ex: "IND1" no SQLRDD cria como "IND1_000001". algum comando que exclua com o nome de criação . Quote Link to comment Share on other sites More sharing options...
joaosolution Posted August 8, 2017 Report Share Posted August 8, 2017 Pablo Boa tarde oSql := SR_GetConnection() cComm := "DROP INDEX IDEMPREG_DBF.IDEMPREG_DBF_SR" nErr := oSql:exec( cComm,, .T.,@nReturn) Att João Bosco Quote Link to comment Share on other sites More sharing options...
sistem Posted August 8, 2017 Report Share Posted August 8, 2017 o sqlrdd pelo menos na minha versao cria o indice assim: NomeTabela_NomeIndiceCriadoComSetIndex para excluir ficaria assim ex: DROP INDEX rece_rece1 ON rece; Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 8, 2017 Author Report Share Posted August 8, 2017 Não reconhece, por que quando o indice é criado , ele está sendo criado com a extensão do SQLSERVER, tem que ir na tabela de criação de indice , resgatar o IDXNAME_ , e deletar pelo PHIS_NAME_ Caro , Sistem.. o que seria a clausula ON no final da instrução ? Quote Link to comment Share on other sites More sharing options...
sistem Posted August 8, 2017 Report Share Posted August 8, 2017 Não reconhece, por que quando o indice é criado , ele está sendo criado com a extensão do SQLSERVER, tem que ir na tabela de criação de indice , resgatar o IDXNAME_ , e deletar pelo PHIS_NAME_ Caro , Sistem.. o que seria a clausula ON no final da instrução ? DROP INDEX index_name ON tbl_name Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 8, 2017 Author Report Share Posted August 8, 2017 Entendi, no SQLSERVER , seria "DROP INDEX tabela.indice" mas vou tentar destar forma Quote Link to comment Share on other sites More sharing options...
sistem Posted August 8, 2017 Report Share Posted August 8, 2017 Entendi, no SQLSERVER , seria "DROP INDEX tabela.indice" mas vou tentar destar forma veja dbDrop( <cTable>, <cIndex> ) https://groups.google.com/forum/#!topic/comp.lang.xharbour/e-oP-BPjpGY Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 8, 2017 Author Report Share Posted August 8, 2017 Já fiz isso , deu um pau de memória lascado... Quote Link to comment Share on other sites More sharing options...
sistem Posted August 8, 2017 Report Share Posted August 8, 2017 Já fiz isso , deu um pau de memória lascado... fez em producao?, explico se outros usuarios estiverem usando o indice e este indice for deletado deve acontecer algo de errado, nao?. (eh soh uma ideia) Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 8, 2017 Author Report Share Posted August 8, 2017 Não , apenas teste mesmo , homologação , só eu estou usando o mesmo ! mas foi pau de memoria mesmo, este comando dbDrop, não funciona pra mim .. não sei por que. Quote Link to comment Share on other sites More sharing options...
sistem Posted August 8, 2017 Report Share Posted August 8, 2017 e assim Sr_dropindex(indexname) faça isto em um DB de teste, Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted August 9, 2017 Report Share Posted August 9, 2017 Senhores, boa tarde ! alguém já removeu algum index no SQLRDD ? foi criado com SET INDEX , criou normalmente, mas na hora de excluir, preciso exclui com o mesmo nome que foi criado ex: "IND1" no SQLRDD cria como "IND1_000001". algum comando que exclua com o nome de criação . Pablo boa noite, Uso Postgres e essa questão sempre foi uma briga minha com os índices, pq eu fazia uma bobagem de submeter o comando DBSETINDEX, após as aberturas das tabelas e este recriava os índices na tabela pg_index (veja view "SELECT * FROM PG_INDEXES "), então como vc sabe os índices da SQLRDD ficam na tabela SR_MGMNTINDEXES e uso as instruções abaixo pra manuseá-los: Listar - SELECT * FROM SR_MGMNTINDEXES WHERE IDXNAME_ LIKE '%IND%' OR IDXNAME_ LIKE '%ind%' order by idxname_ Deletar - DELETE FROM SR_MGMNTINDEXES WHERE IDXNAME_ LIKE '%IND%' OR IDXNAME_ LIKE '%ind%' Mas agora estou trabalhando em outra instrução pra eliminar também os índices da pg_index com a instrução abaixo, mas está dando erro de conteúdo de campos nulos, coisa que eu não tenho se elimino direto pelo PGADMIN e tento recriar os índices. Listar - SELECT x.indEXrelid, x.indrelid, n.nspname AS schemaname, c.relname AS tablename, i.relname AS indexname, t.spcname AS tablespace, pg_get_indexdef(i.oid) AS indexdef FROM pg_index x JOIN pg_class c ON c.oid = x.indrelid JOIN pg_class i ON i.oid = x.indexrelid LEFT JOIN pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_tablespace t ON t.oid = i.reltablespace WHERE (c.relkind = ANY (ARRAY['r'::"char", 'm'::"char"])) AND i.relkind = 'i'::"char" and i.relname like 'ind%' and c.relname='cadlote'; Deletar - DELETE from pg_index where indEXrelid IN ( SELECT x.indEXrelid FROM pg_index x JOIN pg_class c ON c.oid = x.indrelid JOIN pg_class i ON i.oid = x.indexrelid LEFT JOIN pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_tablespace t ON t.oid = i.reltablespace WHERE (c.relkind = ANY (ARRAY['r'::"char", 'm'::"char"])) AND i.relkind = 'i'::"char" and i.relname like 'ind%' and c.relname='cadlote') Analise as instruções e tente adequar para o SGBD que vc usa. []s, Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 10, 2017 Author Report Share Posted August 10, 2017 Senhores, boa noite ! Agradeço muito a atenção de todos, por esta questão , o que eu fiz ! Fui diretamente na tabela do MNGINDEXES que o SQLRDD cria para controle dos mesmos, fiz um select na mesma com o nome de criação , e retornei o PHISNAME_ , e depois criei diretamente com o DROP INDEX tabela.indice_00000?? alguma coisa, sempre cria com esta extensão , resolvi o problema assim , mas vou dar uma olha SISTEM, no comando sugerido Sr_dropindex(indexname) . interessante, espero que funcione. Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted August 11, 2017 Report Share Posted August 11, 2017 Senhores, boa noite ! Agradeço muito a atenção de todos, por esta questão , o que eu fiz ! Fui diretamente na tabela do MNGINDEXES que o SQLRDD cria para controle dos mesmos, fiz um select na mesma com o nome de criação , e retornei o PHISNAME_ , e depois criei diretamente com o DROP INDEX tabela.indice_00000?? alguma coisa, sempre cria com esta extensão , resolvi o problema assim , mas vou dar uma olha SISTEM, no comando sugerido Sr_dropindex(indexname) . interessante, espero que funcione. Foi justamente o que eu postei acima Paulo, bastava informar o PHISNAME_ nas instruções abaixo: Listar - SELECT * FROM SR_MGMNTINDEXES WHERE IDXNAME_ LIKE '%IND%' OR IDXNAME_ LIKE '%ind%' order by idxname_ Deletar - DELETE FROM SR_MGMNTINDEXES WHERE IDXNAME_ LIKE '%IND%' OR IDXNAME_ LIKE '%ind%' []s, Quote Link to comment Share on other sites More sharing options...
Pablo.Softgraf Posted August 16, 2017 Author Report Share Posted August 16, 2017 Meus amigos, bom dia ! Fiz através do comando SR_DROPINDEX, é bem mais prático ! Só tem um problema , se tento cria-lo novamente, ele dá um probleminha. // SE EU COLOCAR ESTE TRECHO DE ABERTURA DENTRO DO FOR , ele não vai gerar o problema, sempre vai abrir e criar // o índice , normalmente, agora, se deixar o NET_USE, for do loop. ele gera um erro de criação de índice, estranho né . pode ser // que esteja faltando alguma propriedade. select 0 if !net_use(warqdel, .T., .F., 'arqdel') // (.T.) ABRE EXCLUSIVO break endif for x := 1 to 5 If !SR_ExistIndex( "RECLPAR11" ) index on CODCLI to "RECLPAR11" endif set index to RECLPAR11 ? indexkey() arqdel->(dbAppend()) arqdel->CODCLI := "CHARLIE" arqdel->(dbCommit()) ? arqdel->CODCLI arqdel->(dbClearindex()) if SR_DropIndex("RECLPAR11") ? "index deletada" endif next Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.