Ir al contenido

Configurar SQL Server

Inicie SQL Server Management Studio Express y cree una base de datos llamada okmdb.

Seleccione la intercalación (collation) de base de datos apropiada.

Edite el fichero $TOMCAT_HOME/openkm.properties

spring.jpa.hibernate.ddl-auto=create-only
spring.jpa.properties.hibernate.dialect=com.openkm.db.dialect.SQLServerDialect

Edite el fichero $TOMCAT_HOME/openkm.properties y habilite los recursos

spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=okmdb
spring.datasource.username=openkm
spring.datasource.password=*secret*
spring.datasource.validationQuery=SELECT 1

Configurar el inicio de sesión de la aplicación

Sección titulada «Configurar el inicio de sesión de la aplicación»

Edite el fichero $TOMCAT_HOME/openkm.xml

authentication.openkm.database=true

Durante el arranque de OpenKM, la aplicación creará automáticamente una estructura de base de datos vacía.

Debe añadir el parámetro “integratedSecurity=true” a la URL de conexión JDBC para habilitar Integrated Security. Por ejemplo:

spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=okmdb;autoReconnect=true;integratedSecurity=true
spring.datasource.username=
spring.datasource.password=

También debe descargar el paquete del driver desde https://go.microsoft.com/fwlink/?linkid=2122434 y copiar el fichero sqljdbc_auth.dll a la carpeta TOMCAT_HOME/bin.

Más información en:

Asegúrese de tener habilitado el protocolo TCP (está deshabilitado por defecto).

La conexión se pierde después de un tiempo.

Sección titulada «La conexión se pierde después de un tiempo.»

Hemos observado en algunas ediciones de SQL Server lo que parece ser un comportamiento nuevo por el cual, tras varias horas, la conexión se cierra (podría ser un parámetro de configuración adicional en las últimas ediciones de SQL Server que está habilitado por defecto o similar). Existe un nuevo atributo de configuración llamado autoReconnect que resuelve esto.

spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=okmdb;autoReconnect=true
spring.datasource.username=openkm
spring.datasource.password=*secret*
spring.datasource.validationQuery=SELECT 1

Cuando el primer inicio de sesión en OpenKM falla con el nombre de usuario y la contraseña correctos (okmAdmin / admin), debe comprobar la configuración de la base de datos.

Compruebe si la base de datos está configurada como case-sensitive; podría ser una de las razones por las que no puede iniciar sesión.

No se puede conectar vía TCP/IP a SQL en localhost, puerto 1433, al usar una instancia en la URL de conexión JDBC

Sección titulada «No se puede conectar vía TCP/IP a SQL en localhost, puerto 1433, al usar una instancia en la URL de conexión JDBC»

Si usa el nombre de la instancia de base de datos en la conexión, debe usar “\\” en el parámetro de configuración spring.datasource.URL. El ejemplo siguiente usa una instancia de base de datos llamada SampleSQL.

spring.datasource.url=jdbc:sqlserver://localhost\\SampleSQL;databaseName=okmdb;autoReconnect=true

Estos errores aparecen en el registro de esta forma:

Ventana de terminal
o.h.engine.JDBC.spi.SqlExceptionHelper : SQL Error: 1205, SQLState: 40001
o.h.engine.JDBC.spi.SqlExceptionHelper: Transaction (Process ID 56) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Modifique la base de datos para evitar estos problemas:

ALTER DATABASE okmdb SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE

Fuente How to Solve Database Deadlock on Microsoft SQL Server.

Si ve este error:

Ventana de terminal
The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.

El problema puede solucionarse añadiendo el parámetro “encrypt=false” a la URL JDBC:

Ventana de terminal
spring.datasource.url=jdbc:sqlserver://sqlserver:1433;databaseName=okmdb;encrypt=false;

Esto se debe a un cambio en la última versión del driver JDBC Java de SQL Server.

Más información en:

El driver no pudo establecer una conexión segura a SQL Server mediante cifrado Secure Sockets Layer (SSL)

Sección titulada «El driver no pudo establecer una conexión segura a SQL Server mediante cifrado Secure Sockets Layer (SSL)»

Esto puede ocurrir cuando SQL Server solo permite conexiones SSL.

El problema puede solucionarse añadiendo los parámetros “encrypt=true” y “trustServerCertificate=true” a la URL JDBC:

Ventana de terminal
spring.datasource.url=jdbc:sqlserver://sqlserver:1433;databaseName=okmdb;encrypt=true;trustServerCertificate=true;

Modificar el nivel de compatibilidad de SQL Server

Sección titulada «Modificar el nivel de compatibilidad de SQL Server»

Para establecer el nivel de compatibilidad de SQL Server en 2012

ALTER DATABASE okmdb SET COMPATIBILITY_LEVEL = 110;