AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 23983
Accepted
Jack
Jack
Asked: 2012-09-10 20:38:05 +0800 CST2012-09-10 20:38:05 +0800 CST 2012-09-10 20:38:05 +0800 CST

"Não foi possível encontrar o procedimento armazenado", mesmo que o procedimento armazenado tenha sido criado no MS SQL Server Management Studio

  • 772

Criei uma tabela testtabledentro do banco de dados testbaseque tem a seguinte estrutura:

product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)

que usei o Microsoft SQL Server 2008 Management Studio.

Eu criei um procedimento armazenado testtable_pricesmallerda seguinte forma

use testbase
go
create procedure testtable_pricesmaller
    @pricelimit money
as
select * from testtable where price = @pricelimit;
go

e são capazes de visualizar os procedimentos armazenados no Object ExplorerMicrosoft SQL Server Management Studio. (Está listado na seguinte estrutura em árvore do Object Explorer)

Databases
    + testbase
        + Tables
            + dbo.testtable
        + Programmability
            + Stored Procedures
                + dbo.testtable_pricesmaller

Acho muito estranho quando recebo o seguinte erro:

Could not find the stored procedure 'dbo.testtable_pricesmaller'.

quando executo a seguinte instrução SQL:

execute dbo.testtable_pricesmaller 50

O que pode estar faltando?

sql-server-2008 stored-procedures
  • 10 10 respostas
  • 195299 Views

10 respostas

  • Voted
  1. user63684
    2015-04-19T13:58:29+08:002015-04-19T13:58:29+08:00

    O cache local do IntelliSense Refresh deve corrigi-lo

    • 27
  2. Zane
    2012-09-11T07:44:11+08:002012-09-11T07:44:11+08:00

    Você não deve ter que reiniciar o banco de dados depois de adicionar um novo procedimento armazenado, embora você precise atualizar seu explorador de objetos para vê-lo lá.

    Na próxima vez que você adicionar um procedimento armazenado, tente executar a opção executar com o botão direito do mouse no explorador de objetos e insira seus parâmetros e veja se ele é executado. Se ele não funcionar, então não tenho certeza qual é o seu problema. Se ele for executado, pode ser algo simples, como o SQL está tentando consultar o banco de dados errado.

    • 7
  3. Best Answer
    Jack
    2012-09-10T21:45:26+08:002012-09-10T21:45:26+08:00

    Finalmente eu sei porque a mensagem aparece no MS SQL Server Management Studio.

    O MS SQL Server Management Studio requer um reiniciá-lo depois de criar um procedimento armazenado nele.

    Depois de reiniciar o MS SQL Server Management Studio, não há mais esse erro.

    (Estranho, isso significa que toda vez que crio um procedimento armazenado, tenho que reiniciá-lo?)

    • 5
  4. Philippe
    2019-02-21T05:46:27+08:002019-02-21T05:46:27+08:00

    No SQL Server 2008, quando conectado em uma conta do Windows, se você não tiver o nível de segurança SYSADMIN, ao criar um objeto sem especificar explicitamente o esquema, ele poderá/irá criá-lo sob o [DOMAIN\username].[ObjectName] ] em vez de [dbo].[ObjectName] (foi corrigido no SQL Server 2012, eu acho).

    Eu tive esse problema comigo quando reduzi o nível de segurança de um usuário, e um dos procedimentos que ele estava executando estava descartando e recriando tabelas sem um esquema, então o restante do procedimento estava travando porque não conseguia acessar o objeto novamente . Acontece que as tabelas agora foram criadas sob seu nome de usuário de domínio.

    Aqui está a postagem da Microsoft sobre esse comportamento:

    https://learn.microsoft.com/en-us/sql/t-sql/statements/create-schema-transact-sql?view=sql-server-2017 (procure a seção "Esquema Implícito e Criação de Usuário")

    Tabela não sendo criada no esquema dbo

    SQL 2008 R2 cria usuário/esquema quando o usuário do Windows cria tabelas

    Então, resumindo, você provavelmente tem um problema de banco de dados (você cria sua tabela em um banco de dados, mas tenta acessá-la de outro) ou você tem o problema como acabei de descrever.

    • 5
  5. Saim Saboor
    2013-07-12T19:21:49+08:002013-07-12T19:21:49+08:00

    Seu comando de criação deve ser

    create procedure dbo.testtable_pricesmaller
        @pricelimit money
    

    você está faltando dbo.antes do nome do procedimento. Sempre que você cria um procedimento, é uma boa prática definir explicitamente o usuário/esquema com o nome de um procedimento, ou seja, o nome do procedimento deve ter assinaturas totalmente qualificadas.

    Eu espero que isso te ajude.

    • 3
  6. S M
    2017-09-08T12:40:06+08:002017-09-08T12:40:06+08:00

    Eu sei que isso é antigo; Me deparei com essa pergunta enquanto procurava uma solução para esse mesmo problema e estou postando esta resposta na esperança de que ajude outras pessoas que também encontrarem essa pergunta.

    No meu caso, recebi a mensagem de erro ao executar um relatório do SSRS usando uma fonte de dados compartilhada. Essa fonte de dados compartilhada não especificou um banco de dados padrão (o parâmetro Default Catalog=) e não consegui adicioná-lo à string de conexão porque não tenho a senha (e quando você altera algo em uma fonte de dados SSRS, tende a desejar que você reinsira a senha).

    Para resolver isso, alterei o banco de dados padrão para o login na instância do SQL Server de mestre para o banco de dados que contém o procedimento armazenado que o relatório desejava executar.

    Ao executar coisas do SSMS, lembre-se de que o painel Object Explorer é uma conexão, enquanto o editor que você possui é uma conexão totalmente diferente. Então você pode ver os objetos para SQL01 no Pesquisador de Objetos, mas o código que você está executando em um editor será executado no SQL02 - eu me deparei com esse problema algumas vezes ao longo dos anos e depois de muito xingar e "Por que não funciona?" percebeu meu erro. Para o editor, olhe no canto inferior direito para ver a qual instância e banco de dados você está conectado.

    • 2
  7. user2023861
    2016-10-13T07:54:00+08:002016-10-13T07:54:00+08:00

    TL;DR: você pode ter um procedimento armazenado que está chamando outro procedimento armazenado que não existe.


    Eu tive esse problema e encontrei uma correção. Aqui está o que aconteceu. Eu criei um procedimento armazenado:

    create procedure dbo.MyProc
        ...
    

    Eu então criei outro procedimento armazenado que executou o primeiro

    create procedure dbo.MyProcCaller
        ...
        exec dbo.MyProc
        ...
    

    Algum tempo depois, renomeei dbo.MyProcpara dbo.MyProc2. Depois de renomeá-lo, quando tentei chamar dbo.MyProcCaller, recebi esta mensagem de erro:

    exec dbo.MyProcCaller
    

    Não foi possível localizar o procedimento armazenado 'RLM.usp_getSecondaryRestrictedLists_Old'.

    Minha solução foi alterar meu segundo procedimento armazenado para usar o novo nome:

    create procedure dbo.MyProcCaller
        ...
        exec dbo.MyProc2
        ...
    

    Aqui está uma maneira simples de verificar se você tem esse problema. Clique para modificar o texto do procedimento armazenado e, em seguida, execute esse texto. Se você receber um aviso como este, precisará renomear seu procedimento armazenado:

    O módulo 'dbo.MyProcCaller' depende do objeto ausente 'dbo.MyProc'. O módulo ainda será criado; no entanto, ele não pode ser executado com êxito até que o objeto exista.

    (1 linha(s) afetada)

    • 1
  8. jrdevdba
    2019-10-01T06:08:31+08:002019-10-01T06:08:31+08:00

    Esta pergunta tem alguns anos, mas eu só quero lançar outra possibilidade para qualquer pessoa como eu que a encontrou mais tarde.

    Executei este comando: EXEC SP_CONFIGURE 'Agent XPs'

    E obtive o erro descrito: Msg 2812, Level 16, State 62, Line 1 Could not find stored procedure 'SP_CONFIGURE'.

    Mas então me lembrei que este servidor está configurado para diferenciar maiúsculas de minúsculas. Portanto, este comando funcionou bem: EXEC sp_configure 'Agent XPs'

    HTH

    • 0
  9. Zeek
    2020-11-20T07:37:03+08:002020-11-20T07:37:03+08:00

    De maneira semelhante, recebi esse erro ao chamar do código ASP.NET VB por trás e foi devido a um caractere de espaço extra na frente do nome do procedimento armazenado, por exemplo, "dbo.mysproc" em vez de "dbo.mysproc".

    • 0
  10. spencer741
    2021-03-06T07:57:12+08:002021-03-06T07:57:12+08:00

    A resposta do @Zane é a melhor resposta. Vou adicionar também... Para quem está no Azure Data Studio, você pode limpar o cache CTRL<CMD>-SHIFT-Pdigitando intellisenseo comando palato. Você verá uma opção para atualizar o cache lá. fonte

    • 0

relate perguntas

  • Melhores práticas para conectar bancos de dados que estão em diferentes regiões geográficas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve