none
Comando DELETE no ASP para SQLServer não finaliza RRS feed

  • Pergunta

  •  

    Pessoal, tenho uma rotina em ASP, que apaga uma série de registros de uma tabela num banco do SQL SERVER, o problema é que quando executa, NÃO DÁ ERRO, mas não apaga todos os registros que devia (da condição WHERE).

     

    O estranho é que:

    - Num banco Access funciona 100%

    - Executando na mão, localmente no QueryManager (sem ser por ASP), funciona 100%.

     

    A tabela possui uns 30 mil registros, deveria apagar mais ou menos 50 a 100 que atendem à condição, e o estranho é que vai apagando tipo de 10 em 10 (mandando "re-executar"), e de repente vai uns 50, tem outras vezes que vai apagando de 10 em 10 até o final... de outras apaga logo os 50 ou 60 registros de uma vez só, ou seja, não consegui ver uma "lógica" do porque ísto está acontecendo.

     

    A Tabela é MUITO acessada, ou seja, são muitas querys acontecendo ao mesmo tempo na tabela, mas NÃO NOS REGISTROS a serem apagados...

     

    A rotina é simples:

     

    Code Snippet

    ConnString="Provider=SQLOLEDB;Data Source=" & nomeservidor & ";UID=" &  useridaqui & ";PWD=" & senhaaqui & ";DATABASE=" & nomedobanco

     

    Set Conn = Server.CreateObject("ADODB.Connection")

    Conn.Open ConnString

     

    strSQL = "DELETE from Prod_Loja WHERE (codloja =" & codloja & " AND OK=0)"

     

    Conn.Execute strSQL,,adCmdText + adExecuteNoRecords      'pegando var do adovbs


    'Conn.Execute strSQL,,129   'outra tentativa
    'Conn.Execute strSQL        'outra tentativa

     

    Conn.Close
    Set Conn = Nothing

     

     

    Alguém tem alguma idéia do que pode estar acontecendo?

     

    Estive pensando em ser problema de conectar a tabela de forma exclusiva, sei lá... estou ficando sem idéias! Smile

     

    Um abraço,

                    Antonio

    quinta-feira, 6 de setembro de 2007 06:08

Todas as Respostas

  • Antonio,

     

    você disse que a tabela é bastante acessada. Enquanto os registros estivessem sendo deletados, não há o risco de outros estarem sendo incluídos ou então terem os seus valores alterados?

     

     


    Ricardo Oneda
    http://oneda.mvps.org/blog

    quinta-feira, 6 de setembro de 2007 11:47
    Moderador
  •  

    Na tabela sim, ela é bem acessada, estes registros que estou apagando não... estes que estou apagando (produtos) são justamente itens que não estão em uso no momento e vão sair pois não serão mais vendidos. Estes não estão nem sendo consultados.
    quinta-feira, 6 de setembro de 2007 17:55
  • Ola amigo...

    Da mesma forma a tabela está sendo usada...Por exemplo, se um select qualquer não estiver usando indice ele fará um table scan...Pq vc não usa uma SP e passa os parametros pra ela...Ou usar (nolock)...

     

    Boa sorte...

    sexta-feira, 7 de setembro de 2007 04:07