Condividi tramite


Eseguire una stored procedure

Questo argomento descrive come eseguire una stored procedure in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL.

Sono disponibili due modi diversi per eseguire una stored procedure. Il primo e più comune approccio consiste nella chiamata della stored procedure da parte di un'applicazione o un utente. Il secondo approccio consiste nell'impostare la stored procedure per l'esecuzione automatica all'avvio di un'istanza di SQL Server. Quando una stored procedure viene chiamata da un'applicazione o da un utente, la parola chiave Transact-SQL EXECUTE o EXEC viene dichiarata in modo esplicito nella chiamata. In alternativa, la routine può essere chiamata ed eseguita senza la parola chiave se la routine è la prima istruzione nel batch Transact-SQL.

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

  • Le regole di confronto del database chiamante vengono utilizzate per la ricerca dei nomi delle stored procedure di sistema corrispondenti. Nei nomi delle stored procedure di sistema nelle chiamate alle stored procedure è pertanto necessario utilizzare sempre la corretta combinazione di maiuscole e minuscole. Ad esempio, il codice seguente, se eseguito nel contesto di un database con regole di confronto con distinzione tra maiuscole e minuscole, genererà un errore:

    EXEC SP_heLP; -- Will fail to resolve because SP_heLP does not equal sp_help  
    

    Per visualizzare i nomi esatti delle stored procedure di sistema, eseguire query nelle viste del catalogo sys.system_objects e sys.system_parameters .

  • Se una stored procedure definita dall'utente ha lo stesso nome di una stored procedure di sistema, potrebbe non essere possibile eseguire la prima.

Consigli

  • Esecuzione di stored procedure di sistema

    Le stored procedure di sistema iniziano con il prefisso sp_ . Poiché sono visualizzate logicamente in ogni database definito dall'utente e dal sistema, possono essere eseguite da qualsiasi database senza che sia necessario specificare il nome completo della stored procedure. È tuttavia consigliabile specificare lo schema in tutti i nomi di stored procedure di sistema con il nome dello schema sys per evitare conflitti. Nell'esempio seguente viene illustrato il metodo consigliato per la chiamata a una stored procedure di sistema.

    EXEC sys.sp_who;  
    
  • Esecuzione di stored procedure definite dall'utente

    Quando si esegue una stored procedure definita dall'utente, si consiglia di specificare il nome completo della stored procedure con il nome di schema. In questo modo, le prestazioni risulteranno leggermente migliorate poiché si evita che debbano essere eseguite ricerche in più schemi tramite il motore di database. Si evita inoltre che venga eseguita la stored procedure errata se un database dispone di stored procedure con lo stesso nome in più schemi.

    Nell'esempio seguente viene illustrato il metodo consigliato per l'esecuzione di una stored procedure definita dall'utente. Si noti che la stored procedure accetta un parametro di input. Per informazioni su come specificare i parametri di input e di output, vedere Specificare i parametri.

    USE AdventureWorks2012;  
    GO  
    EXEC dbo.uspGetEmployeeManagers @BusinessEntityID = 50;  
    

    Oppure

    EXEC AdventureWorks2012.dbo.uspGetEmployeeManagers 50;  
    GO  
    

    Se si specifica una stored procedure definita dall'utente non qualificata, il motore di database cerca la stored procedure nell'ordine seguente:

    1. Schema sys del database corrente.

    2. Schema predefinito del chiamante se eseguito in un batch o in SQL dinamico. In alternativa, se il nome della stored procedure non completo viene visualizzato all'interno del corpo di un'altra definizione di stored procedure, la ricerca viene eseguita nello schema che contiene quest'ultima subito dopo.

    3. Schema dbo nel database corrente.

  • Esecuzione automatica di stored procedure

    Le procedure contrassegnate per l'esecuzione automatica vengono eseguite ogni volta che SQL Server viene avviato e il database master viene ripristinato durante il processo di avvio. L'impostazione di stored procedure per l'esecuzione automatica può essere utile per le operazioni di manutenzione del database o per l'esecuzione continua delle stored procedure come processi di background. È inoltre possibile utilizzare l'esecuzione automatica delle stored procedure per eseguire attività di sistema o di manutenzione in tempdb, ad esempio per creare una tabella temporanea globale. Ciò garantisce che tale tabella temporanea esista sempre quando tempdb viene ricreato durante l'avvio SQL Server.

    Una stored procedure eseguita automaticamente utilizza le stesse autorizzazioni dei membri del ruolo predefinito del server sysadmin . I messaggi di errore generati dalla stored procedure vengono scritti nel log degli errori di SQL Server.

    Non è previsto alcun limite per le procedure di avvio, ma è necessario tenere presente che ogni procedura richiede un thread di lavoro per l'esecuzione. Se è necessario eseguire più procedure all'avvio, ma non necessariamente in parallelo, è possibile impostare una delle procedure come procedura di avvio che richiama le altre procedure. In questo modo è sufficiente un solo thread di lavoro.

    Suggerimento

    Evitare di restituire set di risultati da una stored procedure eseguita automaticamente. Poiché la stored procedure viene eseguita da SQL Server anziché da un'applicazione o un utente, non è disponibile una destinazione per i set di risultati.

  • Impostazione, annullamento e controllo dell'esecuzione automatica

    Solo l'amministratore di sistema (sa) può contrassegnare una stored procedure per l'esecuzione automatica. La stored procedure, inoltre, deve essere nel database master , il proprietario deve essere sae deve essere priva di parametri di input o output.

    Usare sp_procoption per:

    1. Designare una stored procedure esistente come procedura di avvio.

    2. Arrestare l'esecuzione di una stored procedure all'avvio di SQL Server.

Sicurezza

Per altre informazioni, vedere EXECUTE AS (Transact-SQL) e EXECUTE AS Clause (Transact-SQL).

Autorizzazioni

Per altre informazioni, vedere la sezione "Autorizzazioni" in EXECUTE (Transact-SQL).

Uso di SQL Server Management Studio

Per eseguire una stored procedure

  1. In Esplora oggetti, connettersi a un'istanza del motore di database di SQL Server, espanderla e quindi espandere Database.

  2. Espandere il database desiderato, espandere Programmabilità, quindi Stored procedure.

  3. Fare clic con il pulsante destro del mouse sulla stored procedure definita dall'utente desiderata e scegliere Esegui stored procedure.

  4. Nella finestra di dialogo Esegui stored procedure specificare un valore per ogni parametro e indicare se deve essere passato un valore Null.

    Parametro
    Indica il nome del parametro.

    Tipo di dati
    Indica il tipo di dati del parametro.

    Parametro di output
    Indica se il parametro è un parametro di output.

    Passa valore Null
    Consente di passare NULL come valore del parametro.

    Valore
    Digitare il valore del parametro al momento della chiamata alla procedura.

  5. Per eseguire la stored procedure, fare clic su OK.

Uso di Transact-SQL

Per eseguire una stored procedure

  1. Connettersi al motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. In questo esempio viene illustrato come eseguire una stored procedure che prevede un parametro. Nell'esempio viene eseguita la uspGetEmployeeManagers stored procedure con il valore 6 specificato come @EmployeeID parametro .

USE AdventureWorks2012;  
GO  
EXEC dbo.uspGetEmployeeManagers 6;  
GO  

Per impostare o annullare l'esecuzione automatica di una stored procedure

  1. Connettersi al motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. Questo esempio mostra come usare sp_procoption per impostare una stored procedure per l'esecuzione automatica.

USE AdventureWorks2012;  
GO  
EXEC sp_procoption @ProcName = '<procedure name>'   
    , @OptionName = ] 'startup'   
    , @OptionValue = 'on';  

Per arrestare l'esecuzione automatica di una stored procedure

  1. Connettersi al motore di database.

  2. Dalla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui. Questo esempio mostra come usare sp_procoption per arrestare l'esecuzione automatica di una stored procedure.

USE AdventureWorks2012;  
GO  
EXEC sp_procoption @ProcName = '<procedure name>'   
    , @OptionValue = 'off';  

Esempio (Transact-SQL)

Vedere anche

Specificare i parametri
Configurare l'opzione di configurazione del server scan for startup procs
EXECUTE (Transact-SQL)
CREATE PROCEDURE (Transact-SQL)
Stored procedure (Motore di database)