Como administrador de bases de datos o desarrollador de aplicaciones, es 7posible que desee proteger los elementos asociados a las rutinas externas de 7DB2 Universal Database (UDB) frente a manipulaciones no deseadas, restringiendo las acciones de 7las rutinas en tiempo de ejecución. Las 7rutinas CLR de DB2 .NET dan soporte a la especificación de una 7modalidad de control de ejecución que identifique qué tipos de acciones puede 7realizar una rutina en el momento de la ejecución. En el momento de la 7ejecución, DB2 UDB puede detectar si la rutina intenta 7realizar acciones que quedan fuera del ámbito de su modalidad de control de 7ejecución especificada, lo que puede resultar útil cuando se determina si un 7elemento se ha comprometido.
7Para establecer la modalidad de control de ejecución de una rutina CLR, especifique la cláusula opcional 7EXECUTION CONTROL en la sentencia CREATE correspondiente a la rutina. Las 7modalidades válidas son:
7Para modificar la modalidad de control de ejecución en una rutina CLR 7existente, ejecute la sentencia ALTER PROCEDURE o ALTER FUNCTION.
7Si no se especifica la cláusula EXECUTION CONTROL para una rutina CLR, por omisión la rutina CLR 7se ejecuta utilizando la modalidad de control de ejecución más 7restrictiva, SAFE. Las rutinas creadas con esta modalidad de control de ejecución sólo pueden acceder a los recursos controlados 7por el gestor de bases de datos. Las modalidades de control de ejecución menos restrictivas permiten que una rutina acceda a archivos del sistema 7de archivos local 7(FILEREAD o FILEWRITE) o de la red. La modalidad de control de ejecución 7UNSAFE especifica que no se coloca ninguna restricción sobre el comportamiento de la rutina. 7Las rutinas definidas con la modalidad de control de ejecución UNSAFE pueden 7ejecutar código binario.
7Estas modalidades de control representan una jerarquía de acciones permitidas y una modalidad 7de nivel superior incluye las acciones permitidas bajo la misma en la jerarquía. Por ejemplo, la modalidad de control 7de ejecución NETWORK permite a una rutina acceder a archivos de la red, archivos del sistema de archivos local y 7recursos controlados por el gestor de bases de datos. Utilice la modalidad de 7control de ejecución más restrictiva posible y evite utilizar la modalidad 7UNSAFE.
7Si DB2 UDB detecta en el momento de la ejecución que una rutina CLR está 7intentando una acción que queda fuera del ámbito de su modalidad de control de 7ejecución, DB2 UDB devuelve un error (SQLSTATE 38501).
7La cláusula EXECUTION CONTROL sólo se puede especificar para rutinas CLR LANGUAGE. 7El ámbito de aplicación de la cláusula EXECUTION CONTROL está limitado a la 7propia rutina CLR .NET y no abarca ninguna rutina a la que esta pueda llamar.
7 7 7El tipo de datos DECIMAL en DB2 Universal Database (UDB) se representa con 7una precisión de 31 dígitos y una escala de 28 dígitos. El tipo de datos de CLR .NET System.Decimal está limitado a una precisión 7de 29 dígitos y a una escala de 28 dígitos. 7Por lo tanto, las rutinas CLR externas de DB2 UDB no deben asignar un valor mayor que (2^96)-1, 7el valor máximo que se puede representar mediante una precisión de 29 dígitos y 7una escala de 28 dígitos, a una variable del tipo de datos System.Decimal. 7DB2 7UDB genera un error de tiempo de ejecución (SQLSTATE 22003, SQLCODE 7-413) si se produce dicha asignación.
7Cuando se ejecuta una sentencia CREATE de rutina, si hay un parámetro de 7tipo de datos DECIMAL definido con una escala mayor que 28, 7DB2 7UDB genera un error (SQLSTATE 42611, SQLCODE -604).
[ Principio de página |Página anterior | Página siguiente | Contenido ]