Seguridad

30/10/2003 - 00:20 por Cristian | Informe spam
Hola!!
Tengo un problema al intentar ejecutar una UDF
perteneciente al owner dbo.
Si el usuario que utilizo para acceder a la BD es db_owner
no hay problema. El tema es que necesito crear un usuario
que no sea db_ownerm, y cuando intento ejecutar una
funcion de este tipo me da error de permisos.

Ej.

CREATE FUNCTION dbo.DATE_C (@FechaCla NUMERIC)
RETURNS DATETIME
AS
BEGIN
DECLARE @DateRet DATETIME
IF @FechaCla = 0 OR @FechaCla IS NULL
SET @DateRet = NULL
ELSE
SET @DateRet = (CONVERT(DATETIME,'28/12/1800',103)
+@FechaCla)
RETURN @DateRet
END
GO

/* Funciona si el usuario tiene permisos de db_owner
únicamente.*/
select dbo.date_c(72000)
GO
 

Leer las respuestas

#1 Javier Loria
30/10/2003 - 03:00 | Informe spam
Hola Cristian:
Y le diste permisos al usuario de ejecutarlo?.
Algo como:

GRANT EXECUTE ON dbo.DATE_C TO Public

O si prefieres hacerlo desde el administrador corporativo, seleccionando
la funcion clic derecho y boton de permisos.

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Cristian escribio:
Hola!!
Tengo un problema al intentar ejecutar una UDF
perteneciente al owner dbo.
Si el usuario que utilizo para acceder a la BD es db_owner
no hay problema. El tema es que necesito crear un usuario
que no sea db_ownerm, y cuando intento ejecutar una
funcion de este tipo me da error de permisos.

Ej.

CREATE FUNCTION dbo.DATE_C (@FechaCla NUMERIC)
RETURNS DATETIME
AS
BEGIN
DECLARE @DateRet DATETIME
IF @FechaCla = 0 OR @FechaCla IS NULL
SET @DateRet = NULL
ELSE
SET @DateRet = (CONVERT(DATETIME,'28/12/1800',103)
+@FechaCla)
RETURN @DateRet
END
GO

/* Funciona si el usuario tiene permisos de db_owner
únicamente.*/
select dbo.date_c(72000)
GO

Preguntas similares