Mostrando entradas con la etiqueta Base de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Base de datos. Mostrar todas las entradas

sábado, 6 de agosto de 2022

Conectar JasperReports a una base de datos

Vamos a ver como se conecta un informe de JasperReports a una base de datos de Oracle. Para ello, En la pestaña Repository Explorer, en DataAdapters botón derecho del ratón  Create Data Adapter

 

Conectar JasperReports a una BBDD

Elegimos Database JDBC Connection

Conectar JasperReports a una base de datos


Y pulsamos next, rellenamos la siguiente pantalla con la url de la base de datos, su usuario y contraseña

 

DataAdapter  JasperReports

Ahora vamos a las pestañas de la parte inferior y pulsamos Driver Classpath pulsamos el botón Add y donde tengamos instalado nuestro jasperreports copiamos …\jaspersoft\jre.win32.win32.x86_64.feature_11.0.8\jre\bin\ojdbc8.jar

 

DataAdapter  JasperReports

Ahora pulsamos Test. Si todo es correcto pulsamos finish.

Si todo es correcto en la pestaña preview de nuestro informe, desplegamos arriba a la izquierda y elegimos la conexión creada. 

 

Database JDBC Connection  JasperReports

Ahora ya podemos probar el informe con datos dando al play (triángulo verde) y vemos el informe.

Si sale el mensaje Document is Empty no es un error, es que no hay datos que mostar

El nombre de la conexión aparece al principio en el XML

 

Conectar JasperReports a una base de datos

Podemos cambiar el nombre de la conexión con botón derecho del ratón sobre el data adapter y Edit Data Adapter

 

Edit Data Adapter JasperReports

Nos abre el cuadro de diálogo Data Adapter Wizar visto anteriormente, donde podemos cambiar el nombre.


sábado, 18 de febrero de 2017

Roles de SQL Server

Trabajando con roles de servidor

SQL Server provee roles de servidor para ayudar a administrar permisos en un servidor. Estos roles son perfiles de seguridad que agrupan  otros perfiles.
Las roles fijos  de servidor se proporcionan para mayor comodidad y compatibilidad con versiones anteriores.  Es mejor asignar permisos más específicos siempre que sea posible.

Roles de SQL Server
Trabajadores, Click para ver más fotos como esta.


sábado, 4 de febrero de 2017

Bases de datos parcialmente contenidas II


Administración de una base de datos parcialmente contenida

Mantener la configuración de la base de datos en la propia base de datos en lugar de en la master, permite que cada propietario tenga más control sobre su base de datos, sin necesidad de conceder permisos al administrador de la base de datos sysadmin.

Limitaciones

Las bases de datos parcialmente contenidas no permiten las siguientes características:
Utilizar la replicación, cambiar la captura de datos ni cambiar el seguimiento.
Procedimientos numerados.
Objetos vinculados al esquema que dependen de funciones integradas con cambios de intercalación
Cambio de enlace resultante de cambios de intercalación, incluidas referencias a objetos, columnas, símbolos o tipos.
Replicación, cambio de captura de datos y seguimiento de cambios.

Advertencia. Los procedimientos almacenados temporales están permitidos. Pero dado que los procedimientos almacenados temporales infringen el confinamiento, no se espera que sean compatibles con versiones futuras de la base de datos contenida.

Bases de datos parcialmente contenidas II


Identificación de contención de la base de datos

Hay dos formas de identificar el estado de contención de la base de datos. Sys.dm_db_uncontained_entities  es una vista que muestra todas las entidades potencialmente no contenidas en la base de datos. El evento database_uncontained_usage se produce cuando se identifica cualquier entidad no contenida real en tiempo de ejecución.

sys.dm_db_uncontained_entities  

Esta vista muestra todas las entidades de la base de datos que tienen el potencial de no estar contenidas, como las que cruzan el límite de la base de datos. Esto incluye aquellas entidades de usuario que pueden utilizar objetos fuera del modelo de base de datos. Sin embargo, debido a que la contención de algunas entidades (por ejemplo, aquellas que utilizan SQL dinámico) no se puede determinar hasta el tiempo de ejecución, la vista puede mostrar algunas entidades que estén contenidas. 

El evento XEvent de database_uncontained_usage 

Este evento (XEvent) se dispara siempre que se identifica en tiempo de ejecución una entidad no contenida. Esto incluye entidades originadas en código de cliente. Este evento ocurrirá sólo para las entidades no contenidas reales. Sin embargo, el evento sólo se producirá en tiempo de ejecución. Por tanto, cualquier entidad de usuario no contenida que no se haya ejecutado no será identificada por este evento.


Buenas prácticas de seguridad con Bases de Datos contenidas

Las bases de datos contenidas están expuestas a algunas amenazas únicas que deben ser tenidas en cuenta  y mitigadas. La mayoría de las amenazas están relacionadas con el proceso de autenticación USER WITH PASSWORD, que mueve el límite de autenticación desde el nivel del motor de base de datos hasta el nivel de base de datos.


Amenazas relacionadas con los usuarios

Los usuarios de una base de datos contenida con permisos ALTER ANY USER, como miembros de las funciones de base de datos db_owner y db_securityadmin, pueden conceder acceso a la base de datos sin el conocimiento o el permiso o el administrador de SQL Server. Conceder a los usuarios acceso a una base de datos contenida incrementa riesgo de ataque potencial contra la instancia de SQL Server. Los administradores deben tener en cuenta esta delegación de control de acceso y tener mucho cuidado al conceder a los usuarios de la base de datos contenida el permiso ALTER ANY USER. Todos los propietarios de bases de datos tienen el permiso ALTER ANY USUARIO. Los administradores de SQL Server deben auditar periódicamente a los usuarios de una base de datos contenida.


Acceso a otras bases de datos con la cuenta de invitado

Los propietarios y usuarios de bases de datos con permiso ALTER ANY USER pueden crear usuarios de bases de datos contenidas. Una vez un usuario se conecta a una base de datos contenida, puede acceder a otras bases de datos en el motor de base de datos, si las otras bases de datos tienen habilitada una cuenta de invitado Guest.

Creación de un usuario duplicado en otra base de datos

Algunas aplicaciones pueden requerir que un usuario tenga acceso a más de una base de datos. Para ello se pueden crear usuarios de bases de datos idénticos en cada base de datos contenida. Se puede utilizar la opción SID para crear un segundo usuario con contraseña. El siguiente ejemplo crea dos usuarios idénticos en dos bases de datos.

USE DB1;  
GO  
CREATE USER Pepe WITH PASSWORD = '<strong password>';   
-- Return the SID of the user  
SELECT SID FROM sys.database_principals WHERE name = 'Pepe';  
  
-- Change to the second database  
USE DB2;  
GO  
CREATE USER Pepe WITH PASSWORD = '<same password>', SID = <SID from DB1>;  
GO  

Para ejecutar una consulta entre bases de datos, es necesario marcar la opción TRUSTWORTHY en la base de datos de llamadas. Por ejemplo si el usuario (Pepe) definido anteriormente está en DB1, para ejecutar SELECT * FROM db2.dbo.Table1; Entonces debe estar activada para la base de datos DB1 la configuración TRUSTWORTHY. Es necesario ejecutar el siguiente código para activar la configuración de confianza TRUSTWORTHY.
ALTER BASE DE DATOS DB1 SET TRUSTWORTHY ON;

Creación de un usuario que duplica un inicio de sesión

Si se crea un usuario de una base de datos contenida con contraseña con el mismo nombre que un inicio de sesión de SQL Server y si el inicio de sesión de SQL Server se conecta especificando la base de datos contenida como el catálogo inicial, el inicio de sesión de SQL Server no podrá conectarse. La conexión se evaluará como el usuario de base de datos contenida con la contraseña principal de la base de datos contenida en vez de como un usuario basado en el inicio de sesión de SQL Server. Esto podría causar una denegación de servicio intencional o accidental para el inicio de sesión de SQL Server.

Como práctica recomendada, los miembros de la función fija de servidor sysadmin deben considerar la posibilidad de conectarse siempre sin utilizar la opción de catálogo inicial. Esto conecta el inicio de sesión a la base de datos master y evita cualquier intento de inicio de sesión no autorizado de un propietario de la base de datos. A continuación, el administrador puede cambiar a la base de datos contenida mediante la instrucción USE <base de datos>. También se puede establecer un inicio de sesión predeterminado de la base de datos contenida, que complete el inicio de sesión de master y, a continuación, transferir el inicio de sesión a la base de datos contenida.
Como práctica sugerida, no se deben crear usuarios de base de datos contenidas con contraseñas que tengan el mismo nombre que los inicios de sesión de SQL Server. Si existe una conexión duplicada, es mejor conectarse a la base de datos master sin especificar un catálogo inicial y, a continuación, ejecutar el comando USE para cambiar a la base de datos contenida.
Cuando hay bases de datos contenidas, los usuarios de bases de datos no contenidas deben conectarse al motor de base de datos sin utilizar un catálogo inicial o especificando el nombre de base de datos de una base de datos no contenida como el catálogo inicial. Esto evita la conexión a la base de datos contenida que está bajo control menos directo por los administradores del motor de base de datos.

Aumentar el acceso cambiando el estado de contención de una base de datos

Los inicios de sesión que tienen el permiso ALTER ANY DATABASE, tal como los miembros de la función de servidor fijo de dbcreator y los usuarios de una base de datos no contenida que tienen el permiso CONTROL DATABASE, como miembros del rol de base de datos fijo db_owner, pueden cambiar la configuración de una base de datos contenida. En el caso de que se cambie de NONE a PARTIAL o FULL, se puede conceder acceso de usuario creando usuarios de base de datos con contraseña. Esto puede proporcionar acceso sin el conocimiento o  consentimiento del administrador. Para evitar que las bases de datos contengan las conexiones de los usuarios con contraseñas es necesario utilizar triggers de inicio de sesión para cancelar los intentos de inicio de sesión.

Adjuntar una base de datos contenida

Para adjuntar una base de datos contenida, un administrador debe dar a los usuarios no deseados acceso a la instancia del motor de base de datos. Un administrador preocupado por este riesgo puede poner la base de datos en modo RESTRICTED_USER, lo que impide la autenticación de usuarios con contraseña. Sólo los usuarios autorizados a través de  inicios de sesión podrán acceder al motor de base de datos.
Los usuarios se crean utilizando los requisitos de contraseña en vigor en el momento de su creación y las contraseñas no se vuelven a verificar cuando se adjuntan a una base de datos. Al adjuntar una base de datos contenida a un sistema con una directiva de contraseñas más estricta, si la base de datos adjuntada contiene contraseñas débiles, el administrador podría permitir contraseñas que no cumplan la directiva de contraseñas actual en el motor de base de datos adjunto. Los administradores pueden evitar las contraseñas débiles obligando a  que todas las contraseñas se restablezcan para la base de datos adjunta.

Políticas de password

Las contraseñas de una base de datos deben ser contraseñas seguras, pero no es posible protegerlas mediante políticas de contraseña sólidas. Es mejor utilizar la autenticación de Windows siempre que sea posible para aprovechar las políticas de contraseña más extensas disponibles desde Windows.

Autentificación Kerberos

Las contraseñas de usuario de las bases de datos no pueden utilizar la autenticación Kerberos. Por tanto siempre que sea posible hay que utilizar la autenticación de Windows para aprovechar las características de Windows como Kerberos.

Acceso al diccionario fuera de línea

Los hashes de contraseñas de los usuarios de base de datos con contraseñas se almacenan en la base de datos contenida. Cualquier persona con acceso a los archivos de base de datos podría realizar un ataque de diccionario contra los usuarios de base de datos con contraseñas en un sistema no auditado. Para mitigar esta amenaza, hay que restringir el acceso a los archivos de base de datos o solo permitir conexiones a bases de datos contenidas mediante la autenticación de Windows.

Migrar a una base de datos parcialmente contenida

Preparación para migrar una base de datos

Revisar los siguientes elementos para considerar la migración de una base de datos al modelo de base de datos parcialmente contenido.

Es necesario comprender el modelo de base de datos parcialmente contenido. 

Es necesario comprender los riesgos exclusivos de las bases de datos parcialmente contenidas

Las bases de datos contenidas no admiten replicación, cambio de captura de datos o seguimiento de cambios. Es necesario confirmar que la base de datos no utiliza estas funciones.

Hay que revisar la lista de características que se modifican en la base de datos para convertirla en parcialmente contenidas.

Consultar sys.dm_db_uncontained_entities  para encontrar objetos o características no contenidas en la base de datos.

Supervisar el objeto XEvent de database_uncontained_usage para ver cuándo se utilizan las entidades no contenidas.

Habilitar bases de datos contenidas

Antes de poder crear bases de datos contenidas estas, deben estar habilitadas en la instancia del motor de base de datos de SQL Server, Para habilitar las bases de datos contenidas. El siguiente ejemplo habilita bases de datos contenidas en la instancia del motor de base de datos de SQL Server.

sp_configure 'contained database authentication', 1;  
GO  
RECONFIGURE ;  
GO  

Habilitación de bases de datos contenidas utilizando Management Studio

Para habilitar bases de datos contenidas utilizando management studio es necesario:

Sobre el explorador de objetos, hacer clic con el botón secundario del ratón en el nombre del servidor y, a continuación, clic en Propiedades.

En la página Avanzado, en la sección Contención, establecer la opción Habilitar bases de datos contenidas en Verdadero.
Hacer clic en Aceptar.

Convertir una base de datos en una parcialmente contenida

Una base de datos se convierte en una base de datos contenida al cambiar la opción CONTAINMENT con management studio o bien a través de comandos de SQL. 

El ejemplo siguiente convierte una base de datos denominada Contabilidad a una base de datos parcialmente contenida.

USE [master]  
GO  
ALTER DATABASE [Accounting] SET CONTAINMENT = PARTIAL  
GO  

Conversión de una base de datos parcialmente contenida mediante Management Studio
El ejemplo siguiente convierte una base de datos en una base de datos parcialmente contenida.
1. En Explorador de objetos, expanda Bases de datos, haga clic con el botón secundario en la base de datos para convertir y, a continuación, haga clic en Propiedades.
2. En la página Opciones, cambie la opción Tipo de contención a Parcial.
3. Haga clic en Aceptar.
Migración de usuarios a usuarios de bases de datos contenidas
El ejemplo siguiente migra a todos los usuarios que se basan en inicios de sesión de SQL Server a usuarios de bases de datos con contraseñas. El ejemplo excluye los inicios de sesión que no están habilitados. Debe ejecutarse sobre la base de datos contenida.

DECLARE @username sysname ;  
DECLARE user_cursor CURSOR  
    FOR   
        SELECT dp.name   
        FROM sys.database_principals AS dp  
        JOIN sys.server_principals AS sp   
        ON dp.sid = sp.sid  
        WHERE dp.authentication_type = 1 AND sp.is_disabled = 0;  
OPEN user_cursor  
FETCH NEXT FROM user_cursor INTO @username  
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
        EXECUTE sp_migrate_user_to_contained   
        @username = @username,  
        @rename = N'keep_name',  
        @disablelogin = N'disable_login';  
    FETCH NEXT FROM user_cursor INTO @username  
    END  
CLOSE user_cursor ;  
DEALLOCATE user_cursor ;  

sábado, 6 de febrero de 2016

SQL Server: Vistas

Una vista es una sentencia SELECT constituida como un objeto de SQL separado de la tabla o tablas a las que hace referencia. El resultado de su ejecución es un conjunto de registros similar al que obtendríamos con una tabla.
La vista no es una tabla, es una definición de una consulta es decir no posee datos propios. Una vez que está definida la consulta, una vista puede utilizarse como si fuera una tabla, refiriéndose a ella por su nombre.


Vistas en SQL Server



sábado, 26 de diciembre de 2015

Diagramas de bases de datos con SQL Server


Es posible crear y modificar bases de datos de forma visual a través de los diagramas de bases de Datos. Estos diagramas proporcionan una visión gráfica de las tablas en la base de datos incluyendo sus columnas, el modelo E/R y el diagrama de estructura de datos. De esta manera es posible plasmar con facilidad el diagrama entidad-relación que da lugar a una base de datos, si hemos tomado la tarea de diseñar previamente el modelo de los datos.

Creando un diagrama de bases de datos

Para crear un diagrama de bases de datos accedemos a la base de datos de la que deseamos crear el diagrama, seleccionar la carpeta Diagramas de bases de datos y, tras pulsar el botón derecho del ratón Nuevo Diagrama de bases de datos, se nos presentará la pantalla inicial.


Nuevo diagrama de base de datos en SQL Server

sábado, 12 de diciembre de 2015

Creación y modificación de bases de datos SQL Server (Aumentar y reducir tamaño)


Crear una nueva base de datos

Antes de crear una nueva base de datos conviene tener en cuenta los siguientes aspectos: La base de datos a crear se inicializará como una copia de la base de datos model, que contendrá todos los objetos del catálogo model. Esto nos permite incluir de manera automática ciertos objetos y definiciones en todas las bases de datos nuevas.


SQL server

Antes de comenzar conviene conocer la lista de elementos que contendrá la base de datos, es bueno hacer un breve checklist  aunque sólo sea como orientación:

Tamaño de la base de datos y el log.
Ubicación de la base de datos y el log.
Preparación de la documentación de la creación.

Una vez sean conocidos los datos necesarios, y se ha decidido cual será el tamaño que reservaremos para la base de datos a crear, estamos preparados para proceder a la definición de esta. Esta decisión se reflejará considerablemente en el rendimiento del sistema, por lo que debe ser llevada a cabo con cuidado.

sábado, 20 de junio de 2015

Sql Server 2014.Crear una tabla


Hace un tiempo hice una entrada sobre cómo crear una tabla en SQL Server 2005, ahora presento lo mismo pero para SQL server 2014. La operativa apenas ha variado por lo que no me voy  a extender con las pantallas. En esta ocasión además incluyo un pequeño script para que crear una foreing key de un campo de la nueva tabla a otra ya creada.
Sobre la base de datos desde la que deseamos crear la tabla pulsamos botón derecho del ratón -> Nuevo y Tabla.

Crear una tabla SQL Server 2014


sábado, 23 de mayo de 2015

De ACCESS a SQL SERVER como convertir una base de datos.

Hay veces que desarrollamos una base de datos en Access para una aplicación sencilla y con el transcurrir del tiempo la base de datos se va complicando y haciendo más grande hasta que llega un momento en el que nos vemos obligados a migrar a un gestor de base de datos más potente, en este caso hemos elegido SQL Server.

En esta ocasión voy a explicar una forma rápida y sencilla de convertir una base de datos ACCESS 2010 a SQL Server. Con la versión de Access 2010 es muy sencilla la conversión pues viene con un  asistente que nos lleva a través de una serie de pantallas con lo que la conversión es casi automática.

Para realizar dicha migración es necesario que en el servidor de destino  (nuestro propio equipo en este caso)  tenga previamente instalado el Analizador de Consultas de SQL Server.

En Access 2010 elegimos la pestaña de Herramientas de base de datos y nos muestra una barra de iconos a modo de menú. Uno de los iconos tiene el literal SQL Server. Al posicionarnos sobre él, muestra una leyenda indicando que dicho botón migra una parte o toda la base de datos a una base de datos nueva o existente del servidor SQL Server.

Convertir Base de Datos de ACCESS a SQL SERVER

sábado, 9 de mayo de 2015

Conectar una base de datos ACCESS con una aplicación VISUAL STUDIO 2005

Tengo una base de datos Access y la quiero gestionar a través de una aplicación de Visual StudioPara conectar ambas hay que seguir unos pasos muy sencillos.

Primero hay que crear la aplicación de Visual Studio y copiar la Base de Datos Access en el directorio Bin\Debug de dicha aplicación para evitar luego problemas.


Luego desde mi aplicación de Visual Studio elijo Ver y la opción Explorador de Servidores.

Abrir el explorador de servidores

sábado, 20 de diciembre de 2014

Visual Studio: Cambiar el DSN de un informe Crystal Reports

Algunas veces tenemos informes de Crystal  Reports en nuestros proyectos de Visual Studio y todo funciona correctamente, pero llega un momento en el que cambiamos el DSN del que deben leer los informes de la Base de Datos y dejan de funcionar los informes, o sencillamente un informe no funciona porque no está asociado al DSN adecuado.


La solución que aplicaba antes era eliminar el DSN y por tanto el objeto asociado y conectar de nuevo el objeto de la base de datos al informe de Crystal Reports 

Esto nos obliga a asociar de nuevo campo por campo con la consiguiente pérdida de tiempo. Pero he encontrado una forma más rápida de asociar el objeto de Base de datos en la que no es necesario recolocar de nuevo los campos uno por uno.

En este ejemplo concreto la aplicación tengo varios informes asociados a una DSN que cambia con cada versión por tanto al compilar la siguiente versión es necesario cambiar la versión de la DSN (para ello se han creado dos DSN uno de la versión 18.0.0 y otro de la versión 18.0.1)


Sobre el proyecto de Visual Studio en el explorador de soluciones nos posicionamos sobre el informe de Crystal Reports. Al hacer doble click sobre él, se abre en modo edición. 

Informe Crystal Report en Visual Studio

jueves, 27 de febrero de 2014

Poner una base de datos SQL server con usuario único o múltiple

Normalmente las Bases de Datos de SQL Server son de acceso múltiple, es decir que puede acceder a ellas muchos usuarios. Pero puede darse el caso de que queramos que  sólo acceda a ella un usuario o también que nos envíen una base de datos para restaurar y al hacerlo esté en usuario único (single user) y queramos ponerla para múltiples usuarios.

Si el icono de la base de datos aparece con un dibujo de un usuario al lado (como en la figura de abajo) es porque está en usuario único, además lo indicará con un paréntesis donde pone Usuario único.

Base de datos en modo single user

jueves, 20 de febrero de 2014

Crear y reconfigurar una conexión a base de datos con ODBC

Muchas veces nuestra aplicación no conecta con la base de datos, una de las causas más habituales es que el ODBC no esté apuntando correctamente a la base de datos. Para que apunte de nuevo hay que reconfigurar el ODBC o crearlo si no existe.

Para crear un DSN mediante ODBC


Se abre Panel de Control.

Abrir panel de control

martes, 17 de septiembre de 2013

Administración de procesos de una base de datos SQL Server 2005

Cómo saber si una base de datos está operando normalmente


Hay ocasiones en las que necesitamos saber si un proceso lanzado en una base de datos se ha ejecutado correctamente o se  ha quedado colgado y está consumiendo los recursos del servidor. Para poder averiguarlo, SQL SERVER nos ofrece esta herramienta.

En el Object Explorer, en Management hacemos doble click sobre Activity Monitor

monitor de actividad de SQL Server


Y nos sale esta pantalla:

Administración de procesos de una base de datos SQL Server 2005

Donde podemos testear los diferentes procesos que se están ejecutando sobre la base de datos.

Haciendo doble click sobre la línea, obtenemos información (un poco críptica) sobre el proceso.

Detalles del proceso


El símbolo Proceso SQL Server ejecutado correctamente indica que el proceso se ha ejecutado correctamente. El Símbolo Proceso SQL Server en espera para ejecutarse indica que el proceso se encuentra en espera de ejecutarse.

Si necesitamos hacer algo sobre una base de datos, como por ejemplo restaurarla y sale un mensaje que dice que la Base de Datos está en uso, aquí podemos ver quien hay en la Base de Datos y podemos matar el proceso haciendo:
eliminar proceso de SQL Server



En la columna Wait Time vemos el tiempo en milisegundos que lleva dicho proceso a la espera de ejecutarse

Procesos de SQL Server


  En la columna Blocked By vemos si el proceso está bloqueado


Procesos SQL Server

Normalmente al dar al botón refrescar, cambia el número de procesos en ejecución y desaparecen los bloqueos si el proceso ha terminado ya.

Refrescar procesos SQL Server

Consideramos que todo está correcto si no hay elementos bloqueados. Si después de dar reiteradamente a Refresh el mismo proceso sigue bloqueando, podemos considerar que hay un problema.


Ejecutando  exec sp_lock  podemos obtener una select de los procesos que se han quedado bloqueados (se suele ejecutar sobre la base de datos tempdb)

Id de un proceso SQL server