Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como executar um procedimento armazenado no SQL Server 2014 usando o SQL Server Management Studio ou o Transact-SQL.
Há duas maneiras diferentes de executar um procedimento armazenado. A primeira e mais comum abordagem é que um aplicativo ou usuário chame o procedimento. A segunda abordagem é definir o procedimento a ser executado automaticamente quando uma instância do SQL Server for iniciada. Quando um procedimento é chamado por um aplicativo ou usuário, a palavra-chave EXECUTE ou EXEC Transact-SQL é explicitamente declarada na chamada. Como alternativa, o procedimento pode ser chamado e executado sem a palavra-chave se o procedimento for a primeira instrução no lote Transact-SQL.
Nesse Tópico
Antes de começar:
Para executar um procedimento armazenado usando:
Antes de começar
Limitações e restrições
A ordenação de banco de dados de chamada é usada ao corresponder nomes de procedimentos do sistema. Portanto, sempre use o caso exato de nomes de procedimento do sistema em chamadas de procedimento. Por exemplo, esse código falhará se for executado no contexto de um banco de dados que tenha uma ordenação que diferencia maiúsculas de minúsculas:
EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_helpPara exibir os nomes exatos dos procedimentos do sistema, faça uma consulta às visões de catálogo sys.system_objects e sys.system_parameters.
Se um procedimento definido pelo usuário tiver o mesmo nome de um procedimento do sistema, o procedimento definido pelo usuário poderá nunca ser executado.
Recomendações
Executando procedimentos armazenados do sistema
Os procedimentos do sistema começam com o prefixo sp_. Como eles aparecem logicamente em todos os bancos de dados definidos pelo usuário e pelo sistema, eles podem ser executados de qualquer banco de dados sem a necessidade de qualidade total do nome do procedimento. No entanto, recomendamos especificar o esquema sys para todos os nomes de procedimentos de sistema, a fim de evitar conflitos de nomes. O exemplo a seguir demonstra o método recomendado de chamar um procedimento do sistema.
EXEC sys.sp_who;Executando procedimentos armazenados definidos pelo usuário
Ao executar um procedimento definido pelo usuário, recomendamos qualificar o nome do procedimento com o nome do esquema. Essa prática oferece um pequeno aumento de desempenho porque o Mecanismo de Banco de Dados não precisa pesquisar vários esquemas. Ele também impede a execução do procedimento errado se um banco de dados tiver procedimentos com o mesmo nome em vários esquemas.
O exemplo a seguir demonstra o método recomendado para executar um procedimento definido pelo usuário. Observe que o procedimento aceita um parâmetro de entrada. Para obter informações sobre como especificar parâmetros de entrada e saída, consulte Especificar Parâmetros.
USE AdventureWorks2012; GO EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;-Ou-
EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50; GOSe um procedimento não qualificado definido pelo usuário for especificado, o Mecanismo de Banco de Dados procurará o procedimento na seguinte ordem:
O esquema sys do banco de dados atual.
O esquema padrão do chamador quando executado em um lote ou em SQL dinâmico. Ou, se o nome do procedimento não qualificado aparecer dentro do corpo de outra definição de procedimento, o esquema que contém esse outro procedimento será pesquisado em seguida.
O esquema dbo no banco de dados atual.
Executando procedimentos armazenados automaticamente
Os procedimentos marcados para execução automática são executados sempre que o SQL Server é iniciado e o banco de dados mestre é recuperado durante esse processo de inicialização. Configurar procedimentos a serem executados automaticamente pode ser útil para executar operações de manutenção de banco de dados ou para que os procedimentos sejam executados continuamente como processos em segundo plano. Outro uso para execução automática é fazer com que o procedimento execute tarefas de sistema ou manutenção no tempdb, como a criação de uma tabela temporária global. Isso garante que essa tabela temporária sempre exista quando o tempdb for recriado durante a inicialização do SQL Server.
Um procedimento executado automaticamente opera com as mesmas permissões que os membros da função de servidor fixa sysadmin . Todas as mensagens de erro geradas pelo procedimento são gravadas no log de erros do SQL Server.
Não há limite para o número de procedimentos de inicialização que você pode ter, mas lembre-se de que cada um consome um thread de trabalho durante a execução. Se você precisar executar vários procedimentos na inicialização, mas não precisar executá-los em paralelo, faça de um procedimento o procedimento de inicialização e faça com que esse procedimento chame os outros procedimentos. Isso usa apenas um thread de execução.
Dica
Não retorne nenhum conjunto de resultados de um procedimento executado automaticamente. Como o procedimento está sendo executado pelo SQL Server em vez de um aplicativo ou usuário, não há nenhum lugar para os conjuntos de resultados serem executados.
Configurando, limpando e controlando a execução automática
Somente o administrador do sistema (sa) pode marcar um procedimento a ser executado automaticamente. Além disso, o procedimento deve estar no banco de dados mestre , de propriedade da SA, e não pode ter parâmetros de entrada ou saída.
Use sp_procoption para:
Designe um procedimento existente como um procedimento de inicialização.
Interrompa a execução de um procedimento na inicialização do SQL Server.
Segurança
Para obter mais informações, consulte EXECUTE AS (Transact-SQL) e CLÁUSULA EXECUTE AS (Transact-SQL).
Permissões
Para obter mais informações, consulte a seção "Permissões" em EXECUTE (Transact-SQL).
Como usar o SQL Server Management Studio.
Para executar um procedimento armazenado
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server, expanda essa instância e expanda Bancos de Dados.
Expanda o banco de dados desejado, expanda a Programação e expanda Procedimentos Armazenados.
Clique com o botão direito do mouse no procedimento armazenado definido pelo usuário desejado e clique em Executar Procedimento Armazenado.
Na caixa de diálogo Executar Procedimento , especifique um valor para cada parâmetro e se ele deve passar um valor nulo.
Parâmetro
Indica o nome do parâmetro.Tipo de Dados
Indica o tipo de dados do parâmetro.Parâmetro de saída
Indica se esse é um parâmetro de saída.Passar valor nulo
Passe um NULL como o valor do parâmetro.Valor
Digite o valor do parâmetro ao chamar o procedimento.Para executar o procedimento armazenado, clique em OK.
Usando Transact-SQL
Para executar um procedimento armazenado
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como executar um procedimento armazenado que espera um parâmetro. O exemplo executa o
uspGetEmployeeManagersprocedimento armazenado com o valor6especificado como o@EmployeeIDparâmetro.
USE AdventureWorks2012;
GO
EXEC dbo.uspGetEmployeeManagers 6;
GO
Para definir ou remover um processo para execução automática
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como usar sp_procoption para definir um procedimento para execução automática.
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionName = ] 'startup'
, @OptionValue = 'on';
Para impedir que um procedimento seja executado automaticamente
Conecte-se ao Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar. Este exemplo mostra como usar sp_procoption para impedir que um procedimento seja executado automaticamente.
USE AdventureWorks2012;
GO
EXEC sp_procoption @ProcName = '<procedure name>'
, @OptionValue = 'off';
Exemplo (Transact-SQL)
Consulte Também
Especificar parâmetros
Configurar a opção de configuração do servidor scan for startup procs
EXECUTE (Transact-SQL)
CRIAR PROCEDIMENTO (Transact-SQL)
Procedimentos armazenados (Mecanismo de Banco de Dados)