Saltar al contenido

¿Qué permisos son necesarios para truncar una tabla?

Esta es el arreglo más válida que te podemos aportar, sin embargo estúdiala detenidamente y analiza si se puede adaptar a tu trabajo.

Solución:

El mejor lugar para buscar esta información es en libros en línea. el artículo sobre TRUNCATE TABLE aquí indica:

El permiso mínimo requerido es ALTER en table_name. Los permisos TRUNCATE TABLE son predeterminados para el propietario de la tabla, los miembros de la función fija del servidor sysadmin y las funciones fijas de la base de datos db_owner y db_ddladmin, y no son transferibles. Sin embargo, puede incorporar la instrucción TRUNCATE TABLE dentro de un módulo, como un procedimiento almacenado, y otorgar los permisos apropiados al módulo mediante la cláusula EXECUTE AS.

Entonces ALTER son los permisos mínimos requeridos. Puede obtenerlo como propietario de base de datos, puede obtenerlo como DB_DDLAdmin. O simplemente otorgar alter.

Si piensa en lo que hace truncar y cómo funciona, esto tiene sentido, es un comando bastante “severo” y vacía la tabla de datos y lo hace rápidamente.

Según esta referencia en BOL:

El permiso mínimo requerido es ALTERAR en table_name. TRUNCATE TABLE permisos por defecto a la dueño de la mesaLos miembros de la administrador de sistemas rol de servidor fijo, y el db_propietario y db_ddladmin roles de base de datos fijos y no son transferibles. Sin embargo, puede incorporar la instrucción TRUNCATE TABLE dentro de un módulo, como un procedimiento almacenado, y otorgar los permisos apropiados al módulo mediante la cláusula EXECUTE AS.

Puede crear un procedimiento almacenado con ejecutar como propietario para una sola tabla o un procedimiento almacenado para cualquier tabla. En el siguiente código se almacena el procedimiento para truncar cualquier tabla sin asignar el permiso de db_owner u otro:

USE [database name]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:      Yimy Orley Asprilla
-- Create date: Julio 16 de 2014
-- Description: Función para hacer TRUNCATE a una tabla.
-- =============================================
ALTER PROCEDURE [dbo].[spTruncate]
    @nameTable varchar(60)  


WITH EXECUTE AS OWNER
AS

    SET NOCOUNT OFF;

    DECLARE @QUERY NVARCHAR(200);

    SET @QUERY = N'TRUNCATE TABLE ' + @nameTable + ';'


    EXECUTE sp_executesql @QUERY;

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *