Eliminare funzioni definite dall'utenteDelete User-defined Functions

È possibile eliminare funzioni definite dall'utente in SQL Server 2017SQL Server 2017 usando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQLYou can delete (drop) user-defined functions in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Non è possibile eliminare la funzione se nel database sono presenti funzioni o viste Transact-SQL che fanno riferimento a questa funzione e che sono state create tramite SCHEMABINDING oppure se sono presenti colonne calcolate, vincoli CHECK o vincoli DEFAULT che fanno riferimento alla funzione.You will not be able to delete the function if there are Transact-SQL functions or views in the database that reference this function and were created by using SCHEMABINDING, or if there are computed columns, CHECK constraints, or DEFAULT constraints that reference the function.

  • Non è possibile eliminare la funzione se sono presenti colonne calcolate che fanno riferimento alla funzione e che sono state indicizzate.You will not be able to delete the function if there are computed columns that reference this function and have been indexed.

Sicurezza Security

Autorizzazioni Permissions

È necessaria l'autorizzazione ALTER per lo schema a cui appartiene la funzione o l'autorizzazione CONTROL per la funzione.Requires ALTER permission on the schema to which the function belongs, or CONTROL permission on the function.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per eliminare una funzione definita dall'utenteTo delete a user-defined function

  1. Fare clic sul segno più accanto al database che contiene la funzione che si desidera modificare.Click on the plus sign next to the database that contains the function you wish to modify.

  2. Fare clic sul segno più accanto alla cartella Programmabilità .Click on the plus sign next to the Programmability folder.

  3. Fare clic sul segno più accanto alla cartella che contiene la funzione che si desidera modificare:Click the plus sign next to the folder that contains the function you wish to modify:

    • Table-valued FunctionTable-valued Function

    • Funzione a valori scalariScalar-valued Function

    • Funzione di aggregazioneAggregate Function

  4. Fare clic con il pulsante destro del mouse sulla funzione che si desidera eliminare e scegliere Elimina.Right-click the function you want to delete and select Delete.

  5. Nella finestra di dialogo Elimina oggetto fare clic su OK.In the Delete Object dialog box, click OK.

    Importante

    Fare clic su Mostra dipendenze nella finestra di dialogo Elimina oggetto per aprire la finestra di dialogo Dipendenze di nome_funzione.Click Show Dependencies in the Delete Object dialog box to open the function_nameDependencies dialog box. Verranno visualizzati tutti gli oggetti che dipendono dalla funzione e tutti gli oggetti da cui dipende la funzione.This will show all of the objects that depend on the function and all of the objects on which the function depends.

Utilizzo di Transact-SQL Using Transact-SQL

Per eliminare una funzione definita dall'utenteTo delete a user-defined function

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    -- creates function called “Sales.ufn_SalesByStore”  
    USE AdventureWorks2012;  
    GO  
    CREATE FUNCTION Sales.ufn_SalesByStore (@storeid int)  
    RETURNS TABLE  
    AS  
    RETURN   
    (  
        SELECT P.ProductID, P.Name, SUM(SD.LineTotal) AS 'Total'  
        FROM Production.Product AS P   
        JOIN Sales.SalesOrderDetail AS SD ON SD.ProductID = P.ProductID  
        JOIN Sales.SalesOrderHeader AS SH ON SH.SalesOrderID = SD.SalesOrderID  
        JOIN Sales.Customer AS C ON SH.CustomerID = C.CustomerID  
        WHERE C.StoreID = @storeid  
        GROUP BY P.ProductID, P.Name  
    );  
    GO  
    
    USE AdventureWorks2012;  
    GO  
    -- determines if function exists in database  
    IF OBJECT_ID (N'Sales.fn_SalesByStore', N'IF') IS NOT NULL  
    -- deletes function  
        DROP FUNCTION Sales.fn_SalesByStore;  
    GO  
    

    Per altre informazioni, vedere DROP FUNCTION (Transact-SQL).For more information, see DROP FUNCTION (Transact-SQL).