none
Banco corrompido RRS feed

  • Pergunta

  • tenho 3 bancos iguais, em servidores diferentes, porem acredito que 1 deles tenha se corrompido, pois tento utilizar uma procedure do sistema e ele da um erro e nos outros não da este erro.

    tento executar : EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

    e me retorna o erro:

    Msg 195, Level 15, State 10, Line 1

    'schema_name' is not a recognized function name.

    

    Alguem pode me dar uma luz? rs o que devo fazer, apra resolver este problema?

    Att.

    sexta-feira, 16 de setembro de 2011 17:32

Respostas

  • Igor,

     

     

    hahaha, bom, não sei exatamente o que pode estar gerando isso, mas verifique os esquemas da tabela, e outra, eu nao sou fã de procedures não documentadas, claro que são uteis, mas eu evito ao maximo utiliza-las, segue um exemplo ja automatico para o que voce esta tentando fazer:

    DECLARE @Table TABLE(COMANDO VARCHAR(100))

    DECLARE @Comando VARCHAR(8000)

    INSERT INTO @Table

    SELECT 'ALTER TABLE ' + Name + ' NOCHECK CONSTRAINT ALL'

    FROM sys.objects

    WHERE type_desc LIKE 'USER_TABLE'

     

    DECLARE Principal_Cursor CURSOR FOR

    SELECT Comando FROM @Table

    OPEN Principal_Cursor

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    WHILE @@FETCH_STATUS=0

    BEGIN

    EXECUTE (@Comando)

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    END

    CLOSE Principal_Cursor

    DEALLOCATE Principal_Cursor


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    sexta-feira, 16 de setembro de 2011 19:17
    Moderador
  • Igor,

     

    Sem crise, Segue:

    CREATE TABLE #Tabela(COMANDO VARCHAR(100))

    DECLARE @Comando VARCHAR(8000)

    INSERT INTO #Tabela

    SELECT 'ALTER TABLE ' + Name + ' NOCHECK CONSTRAINT ALL'

    FROM sys.objects

    WHERE type_desc LIKE 'USER_TABLE'

     

    DECLARE Principal_Cursor CURSOR FOR

    SELECT Comando FROM #Tabela

    OPEN Principal_Cursor

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    WHILE @@FETCH_STATUS=0

    BEGIN

    EXECUTE (@Comando)

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    END

    CLOSE Principal_Cursor

    DEALLOCATE Principal_Cursor

    DROP TABLE #tabela


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    sexta-feira, 16 de setembro de 2011 19:24
    Moderador

Todas as Respostas

  • Não creio que isso seja corrupção, de alguma maneira ele esta tentando executar uma função inexistente, no caso SCHEMA_NAME...
    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    sexta-feira, 16 de setembro de 2011 18:34
    Moderador
  • ta e ae? alguma dica? rs
    sexta-feira, 16 de setembro de 2011 19:09
  • Igor,

     

     

    hahaha, bom, não sei exatamente o que pode estar gerando isso, mas verifique os esquemas da tabela, e outra, eu nao sou fã de procedures não documentadas, claro que são uteis, mas eu evito ao maximo utiliza-las, segue um exemplo ja automatico para o que voce esta tentando fazer:

    DECLARE @Table TABLE(COMANDO VARCHAR(100))

    DECLARE @Comando VARCHAR(8000)

    INSERT INTO @Table

    SELECT 'ALTER TABLE ' + Name + ' NOCHECK CONSTRAINT ALL'

    FROM sys.objects

    WHERE type_desc LIKE 'USER_TABLE'

     

    DECLARE Principal_Cursor CURSOR FOR

    SELECT Comando FROM @Table

    OPEN Principal_Cursor

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    WHILE @@FETCH_STATUS=0

    BEGIN

    EXECUTE (@Comando)

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    END

    CLOSE Principal_Cursor

    DEALLOCATE Principal_Cursor


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    sexta-feira, 16 de setembro de 2011 19:17
    Moderador
  • Fabrizzio,

                 o sql server destes servidores é o 2000. Esqueci de avisar rs.

    sexta-feira, 16 de setembro de 2011 19:21
  • Igor,

     

    Sem crise, Segue:

    CREATE TABLE #Tabela(COMANDO VARCHAR(100))

    DECLARE @Comando VARCHAR(8000)

    INSERT INTO #Tabela

    SELECT 'ALTER TABLE ' + Name + ' NOCHECK CONSTRAINT ALL'

    FROM sys.objects

    WHERE type_desc LIKE 'USER_TABLE'

     

    DECLARE Principal_Cursor CURSOR FOR

    SELECT Comando FROM #Tabela

    OPEN Principal_Cursor

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    WHILE @@FETCH_STATUS=0

    BEGIN

    EXECUTE (@Comando)

    FETCH NEXT FROM Principal_Cursor INTO @Comando

    END

    CLOSE Principal_Cursor

    DEALLOCATE Principal_Cursor

    DROP TABLE #tabela


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    sexta-feira, 16 de setembro de 2011 19:24
    Moderador
  • Fabrizzio,

          valeu mesmou vou salvar as 2, mas eu estou reinstalando porque preciso desse servidor pra ontem e todo arrumadinho pq eh o ambiente q o cliente vai ver entao vou reinstalar pra deixar ele redondo..dei um detach salvei os mdf e ldf vou e depois de subir o sql server novo vou atachar estes arquivos.

    sexta-feira, 16 de setembro de 2011 19:31
  • Igor,

     

    Sem problemas, só não esqueca de voltar aqui depois e postar o resultado se deu certo =D


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    sexta-feira, 16 de setembro de 2011 19:32
    Moderador