944 063 154

Blog

Etiqueta: SQL

Recuperando una base de datos SQL Server y su último ID insertado

Publicado enDesarrollo y Programación en octubre 22, 2018 1:00 pm

En este post vamos a hablar sobre diferentes recuperaciones en SQL Server; de cómo recuperar una base de datos sin archivo de log o del proceso para conseguir el último ID insertado en SQL.

Recuperar una base de datos

Si por cualquier motivo no tienes el archivo de transacciones (.ldf) obtendrás un error de este tipo a la hora de intentar adjuntar una base de datos desde el Wizard de SQL. Si quieres recuperar una base de datos sin archivo de log en SQL Server tendrás que seguir los siguientes pasos.

recuperar una bbdd-sql-recuperaciones en sql server

Suponiendo que el .mdf esté en buenas condiciones, puedes adjuntar la base de datos y forzar a la reconstrucción del archivo de transacciones.

El siguiente ejemplo muestra cómo adjuntar la base de datos “sergiosainz” indicando el path a mi .mdf. En tu caso, deberás sustituir esos valores por los que se correspondan con tu base de datos.

USE [master]
GO
CREATE DATABASE [sergiosainz] ON
(FILENAME = N’C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAsergiosainz.mdf’)
FOR ATTACH_REBUILD_LOG
GO

Y, en relación a las recuperaciones en SQL Server, viene la segunda parte del post.

Recuperar el último ID insertado

¿Eres uno de los que aún no utiliza el driver oficial de SQL Server? Si este es tu caso, a continuación, te dejamos un pequeño tip para recuperar el último ID insertado en una consulta de SQL Server con la obsoleta extensión MSSQL de PHP. Aunque pueda no parecerlo, es un proceso que resulta muy sencillo y para el que no hacen falta conocimientos avanzados de programación.

Para recuperar el último ID insertado en tu base de datos MSSQL, necesitarás un script similar al que te indicamos a continuación.


$q = mssql_query("INSERT INTO TableName(...) VALUES(...); SELECT ; LAST_INSERT_ID=@@IDENTITY");
$r = mssql_fetch_assoc($q);

Como puedes comprobar, la ejecución de este script no entraña ninguna dificultad. Siguiendo este simple proceso, podremos recuperar el último ID insertado en una consulta de SQL Server.

Si quieres saber más acerca del lenguaje SQL, échale un vistazo a nuestro post sobre Consultas SQL. En el que hablamos sobre cuáles las consultas SQL que más se ejecutan y la cantidad de CPU que consumen.

Si tienes cualquier duda en relación a bases de datos, estamos a tu disposición a través de nuestras vías de soporte. No dudes en escribirnos mediante el sistemas de tickets o correo electrónico para lo que sea. Y, ya sabes, no te olvides de pasar de vez en cuando por nuestro blog sobre tecnología y programación.

Consultas SQL que más se ejecutan y el CPU que consumen

Publicado enGeneral en octubre 19, 2018 10:15 am
En las tareas de administración de SQL Server, es necesario recabar información; especialmente a fin de conocer las sentencias que más hacen trabajar al servidor. Por ello, es de gran utilidad conocer cuáles son las consultas SQL que más se ejecutan y cual es su consumo de CPU. SQL Server es un sistema que ayuda a la gestión de las bases de datos. Un producto de Microsoft que está basado en el modelo relacional, pero que además, se utiliza para el rendimiento de instancias en el motor de la base de datos. Esto es, depurar procedimientos o llevar a cabo pruebas de esfuerzo.
Lo habitual es que, entre las consultas más ejecutadas en SQL Server, se encuentren consultas de selección o básicas. Pero también pueden darse cualquiera de los otros tipos de consultas, como consultas de descripción, con predicado o de acción.

Las consultas SQL más ejecutadas

Para conocer cuáles son las consultas que con mayor frecuencia se realizan en SQL Server basta con un script. Estas líneas de texto mostrarán, entre otras cosas, el top ten de las consultas que más veces se repiten. Es posible que, en muchos casos, aparezcan repetidas. Para evitar las duplicidades en las consultas, puedes utilizar servicios de caché. De esta forma, se mostrarán las consultas más ejecutadas sin repeticiones.


SELECT TOP 10
qs.execution_count,
SUBSTRING(qt.text,qs.statement_start_offset/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(max), qt.text)) * 2
else qs.statement_end_offset end -qs.statement_start_offset)/2)
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY
qs.execution_count DESC

En ocasiones, es posible que nuestro SQL Server tenga un gran consumo de CPU. Una buena forma de saber de dónde viene ese consumo excesivo de CPU es realizar consultas. De esta forma podremos saber cuáles son las que más sobrecargan, de media, nuestro servidor. Este consumo elevado de CPU en el servidor puede deberse a diferentes motivos; desde fallos en la memoria del servidor a espacio insuficiente. También es posible que esto se deba a la presencia de algún elemento malicioso que ejecuta demasiada actividad aunque no sea visible.

En cualquier caso, el consumo de CPU es un aspecto que no debe descuidarse en un servidor. Ya que esto podría afectar al rendimiento del servidor y provocar problemas de operatividad.

Consultas SQL con mayor consumo de CPU

Para conocer dónde se encuentra el problema, podemos recurrir a un script. De esta forma podremos saber cuáles son las consultas con un consumo más elevado de CPU. Unas consultas que pueden estar sobrecargando la CPU de nuestro servidor.

SELECT TOP 10
qs.total_worker_time/qs.execution_count as [Avg CPU Time],
SUBSTRING(qt.text,qs.statement_start_offset/2,
(case when qs.statement_end_offset = -1
then len(convert(nvarchar(max), qt.text)) * 2
else qs.statement_end_offset end -qs.statement_start_offset)/2)
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY
[Avg CPU Time] DESC

Para mejorar aún más el rendimiento de tu servidor, puedes consultar cuáles son las consultas SQL Server que más se ejecutan para optimizar el alojamiento. Un cambio que se reflejará en el comportamiento de los sitios web que en él se encuentren.

Si además de informarte sobre consultas SQL quieres saber de recuperaciones en SQL Server, en nuestro blog encontrarás la información necesaria.

Clonar una base de datos

Publicado enSistemas TI

A fin de realizar pruebas, actualizaciones o cambios previamente es recomendable tener una copia o hacer las pruebas con dicha copia sin tocar la base de datos en producción. Para ello, podemos clonar nuestra base de datos de forma sencilla desde el panel de control. Esta técnica es válida para bases de datos mySQL cómo MSSQL. Además de clonar una base de datos, también es posible reparar aquellas que estén corruptas; encontrarás información sobre ello en nuestros artículos de “Reparar bbdd parte 1” y “Reparar bbdd parte 2“, en el que te lo explicamos paso a paso.

Clonar una base de datos

1) Desde el panel de control Plesk > Sitios Web y Dominios > Bases de datos y pinchamos en Copiar.

2) – Suscripción de destino: Podremos escoger otro dominio/suscripción en el caso de que tengamos más alojamientos con la misma cuenta en el mismo servidor.

  • Base de datos de destino: Creamos una base de datos nueva con el nombre que le queramos dar.
  • Crear una copia completa: Seleccionamos esta opción si queremos traernos todos los registros de la base de datos de origen. En el caso de que sólo necesitemos la estructura dejaríamos la opción sin marcar.

3) Con esto se empezará a clonar la base de datos; dependiendo del tamaño de la misma, te podrás tomar el café tranquilo o no ;). Fíjate en que no da la opción de Webadmin, sino existe un usuario con permisos.

4) En la pestaña Usuarios podemos crear el acceso correspondiente.

 

clonar una base de datos-linube

Con esto ya tenemos nuestra base de datos clonada, rápido y sencillo ¿verdad?

clonar una base de datos-sql

 

Pero, si por el contrario, lo que quieres es recuperar una base de datos sin archivo de log, consulta el post sobre recuperaciones en SQL Server.

Y ya sabes, ¡estaremos encantados de atender cualquier duda/sugerencia que tengas!

Exportar/Importar una base de datos MySQL utilizando Plesk y phpMyAdmin

Publicado enSistemas TI

En este artículo explicaremos cómo mover el contenido de una base de datos MySQL a una nueva; para ello, utilizaremos Plesk y phpMyAdmin.

Exportar una base de datos MySQL

1) En el panel de control Plesk vamos a SITIOS WEB Y DOMINIOS > Bases de Datos.

2) Seleccionamos la opción Webadmin de la base de datos origen (la que queremos exportar).

3) Una vez en phpMyAdmin, vamos a la opción Exportar y le damos a Continuar.

Importar una base de datos MySQL

Una vez tenemos la base de datos, hay que ir al Webadmin de la base de datos de destino, si aún no tenemos una base de datos es el momento de crearla desde PLESK.

1) Antes de importa la base de datos tenemos que editar el archivo .sql que nos hemos descargado, para ello se puede usar cualquier editor de texto simple, en este ejemplo yo uso Sublime Text.

Tenemos 2 líneas importantes:

CREATE DATABASE -> La borramos entera. Ya que no es necesario crear la base de datos al haberlo hecho desde Plesk.
USE databasename -> El databasename debe coincidir con el nombre de la base de datos destino.

base de datos MySQL-mysqlsublime

2) Con nuestro .sql listo para el combate. Vamos a la opción Importar > Seleccionamos la base de datos a subir y le damos a Continuar.

base de datos MySQL-mysqlimport4

3) Si todo ha ido bien, veremos que se han creado las correspondientes tablas y sus registros.

base de datos MySQL-mysqlimport5

MySQL es la mayor fuente de bases de datos del mundo. Consulta su web, aquí. 

En cambio, si lo que deseas es clonar una base de datos, pincha aquí. Todo ello y mucho más en nuestro blog tecnológico.

Activar el modo exclusivo en SQL Server

Publicado enSistemas TI

Cuando nos disponemos a realizar ciertas operaciones, es posible que se nos requiera un acceso en modo exclusivo a una determinada base de datos. En el caso de que haya conexiones abiertas contra la base de datos, obtendremos un error de aspecto similar a este:

Mens. 5030, Nivel 12, Estado 2, Línea 1
No se puede bloquear de forma exclusiva la base de datos para realizar la operación.

Para poder solucionarlo, debemos ir a las propiedades de la base de datos. Una vez allí, realizaremos el siguiente camino:  opciones > estado> restringir acceso. Una vez allí, seleccionamos single.

Modo exclusivo mediante consultas

Si lo prefieres, también puedes ejecutar la misma acción a través de una consulta a la base de datos:

ALTER DATABASE [nombre_bd] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

GO

Es entonces cuando podemos proceder a realizar los cambios necesarios para otorgar a la aplicación un acceso exclusivo a la base de datos.

Salir del modo exclusivo SQL Server

Si queremos volver al modo de múltiples usuarios, es necesario matar la conexión con la base de datos. Y, a continuación, cambiar de nuevo el modo de conexión. Es decir, deshacer los cambios para otorgar el modo exclusivo. Algo que puedes hacer fácilmente mediante la siguiente consulta:

Kill [spid]
ALTER DATABASE [nombre_bd] SET MULTI USER

De esta forma, se evitará que aparezca el error si una aplicación requiere de acceso exclusivo a una base de datos. Además, podrás deshacer esta operación en cualquier momento con la misma facilidad.

Agregar o quitar una interfaz de red en SQL Server

Publicado enDesarrollo y Programación Sistemas TI

Una interfaz de red es una aplicación que se encarga de posibilitar que una máquina virtual pueda comunicarse con otros recursos de la red. Una herramienta que es de gran utilidad para, entre otras cosas, manejar y gestionar bases de datos en un servidor- En este caso, utilizaremos una máquina de Azure para agregar una interfaz de red en SQL Server. Desde la interfaz de red pueden hacerse muchas tareas como, por ejemplo, establecer una conexión entre recursos; en nuestro caso entre Azure y otros recursos locales. Por ello, una única máquina puede contar con varias interfaces de red.

Cuando se instala SQL Server en un alojamiento, el gestor de bases de datos tiene que configurarse teniendo en cuenta las interfaces de red; pero no cualquier interfaz de red, sino solo aquellas que están habilitadas en el momento de la instalación. Pero, si más tarde, queremos habilitar o deshabilitar una nueva intefaz tendremos que hacerlo manualmente. Por defecto no es posible que la interfaz aparezca o desaparezca con cada cambio en la configuración de red.

Añadir interfaz de red desde el registro

Si quieres añadir una interfaz de red a una máquina en Azure, puedes editar el registro. Esta, además, es una de las mejores formas para agregar o quitar interfaces de red. Ya que la máquina dispone de una ubicación específica para guardar todo el registro; en el caso de una máquina Azure estos datos se encuentran en la siguiente ubicación:

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL.1MSSQLServerSuperSocketNetLibTcp]

Si lo que necesitas es quitar la interfaz, en lugar de añadirla, también dispones de diferentes maneras. Una de ellas, y con toda seguridad la más sencilla, es borrando el registro en el que se encuentra. Así, en el caso de que luego quieras volver a añadirla, puedes exportar una clave y editarla. Para ello, no es necesario crear la clave, ya que esta ya existía con anterioridad y solo tendrás que editarla de la forma que más te convenga. De esta forma, cuando mása tarde se ejecute el .reg se insertarán todos y cada uno de los cambios que hayan sido introducidos.

interfaz de red

Cómo cambiar formato de SQL Server (dateformat)

Publicado enSistemas TI

¿Tienes instalado por defecto otro idioma en en tu gestor de bases de datos? Este es un problema que puede suceder al migrar una base de datos a otro entorno mssql que no comparta el mismo lenguaje de instalación que el que teníamos en un principio. Las ocasiones en las que hace falta cambiar el lenguaje de SQL (“date format of sql server” en inglés) son bastante numerosas.

En este caso ha sido al restaurar una base de datos que se encontraba en un sql con lenguaje “español” a otro que habían instalado en “us_english”. Con el primero las fechas (campos de tipo datetime) se muestran en formato “dd/mm/yyy” pero en inglés las fechas tienen el formato “mm/dd/yyyy”.

Si mostramos la tabla desde el Microsoft Sql Server Managmentent Studio veremos que las fechas SQL se muestran tal y como hemos importado. Pero el problema viene cuando queremos hacer una consulta. Por ejemplo, desde nuestra web, y Sql Server nos devuelve la fecha; entonces veremos que se produce un error que está relacionado con el formato de la fecha. Por ello, y puestos ya en situación, vamos manos a la obra con el date format sql server.

Date format SQL Server; ¿cómo ver el lenguaje sql?

select @@language

Si mssql ha sido instalado en inglés seguramente obtendrás us_english como resultado.

Y, ¿cómo podemos ver todos los lenguajes disponibles y sus propiedades? 

  sp_helplanguage

lenguaje sql server-date format sql server

Date format SQL ¿Cómo establecer el lenguaje en sql?

De esta manera establecemos el lenguaje español para todas las consultas que lancemos desde la sesión y con el usuario que estemos conectados:

SET LANGUAGE Español

También podemos, por ejemplo en el caso de nuestra web, antes de lanzar una consulta sql especificar el dateformat deseado en cada caso, indicando: 

set dateformat dmy

¿Cómo establecer el lenguaje predeterminado para TODAS las bases de datos del servidor?

De esta manera conseguimos que por defecto se devuelvan las fechas en inglés al formato dd/mm/yyyy. Lo que debemos hacer es abrir Microsoft Sql Server Managmentent Studio; ir a las propiedades del servidor SQL y en el apartado avanzado, modificar la opción idioma predeterminado por Español.

lenguaje-date format sql server

 

 

 

 

 

 

 

 

Además hay que tener en cuenta el lenguaje por defecto de los Inicios de sesión que existan en el servidor, ya que los que creemos nuevos a partir de ahora lo harán con lenguaje español. Para ello:

USE (master) 

GO

AFTER LOGIN (serversqlsergiosainz) WITH DEFAULT_DATABASE=(master) DEFAULT _LANGUAGE= (Spanish)

GO

Recuerda que también es posible modificar el idioma por el deseado desde las propiedades del usuario.

date format sql server

Y hasta aquí el tutorial sobre Date format sql. En lo que respecta a Transact-SQL, estos son los tipos de datos y funciones de fecha y hora a partir de SQL Server 2012.

Y si quieres saber más, ¡consulta nuestros artículos!

Copiar tablas de una bbdd SQL Server a otra

Publicado enSistemas TI

Si tenemos una base de datos en producción y queremos disponer de una copia de esos datos para desarrollo, sólo necesitamos algunas tablas.  El siguiente punto será copiar tablas de una base de datos SQL Server a otra.

Cabe destacar que aunque existe la forma de hacerlo mediante script, en esta ocasión utilizaremos el Wizard.

Cómo copiar tablas de una base de datos SQL Server a otra

1) Seleccionamos la base de datos destino y procedemos a importarlo (Tasks > Import Data…).

copiar tablas de una base de datos SQL Server a otra-I

2) Inicia el el asistente para la importación y exportación de Wizard.

copiar tablas de una base de datos SQL Server a otra-II

3) Indicamos el nombre de servidor, en nuestro caso cómo es localhost podemos poner un punto. Después, nos autentificamos mediante Windows o SQL; y finalmente, si los datos son correctos, nos dejará seleccionar la base de datos de origen, en nuestro caso LINUBE_PROD.

copiar tablas de una base de datos SQL Server a otra-III

4) De la misma forma, en este paso indicamos el destino. Para nosotros, LINUBE_DEV. Si no tuviésemos la base de datos de destino ya creada, podemos darle a “”New…” para crearla.

copiar tablas de una base de datos SQL Server a otra-IV

5) Tal y como se muestra en la siguiente captura de pantalla, dejamos marcada la primera opción.

copiar tablas de una base de datos SQL Server a otra-V

6) Ahora nos mostrará las tablas y vistas que podemos importar. En nuestro caso sólo existe una tabla (T_Servidores_Cloud) que es la que hemos creado a modo de ejemplo. Cómo en el destino no existe la tabla, automáticamente nos la creará con el mismo nombre y los mismos campos.

copiar tablas de una base de datos SQL Server a otra-VI

7) Si necesitamos que el nombre sea otro, también podemos editarlo. Si además queremos controlar los campos de destino podemos pinchar en el botón “Edit Mappings…” y nos mostrará todas las posibilidades.

copiar tablas de una base de datos SQL Server a otra-VII

8) Finalmente tenemos un resumen de lo que se va a hacer y podemos darle a “Finish”.

 

Si te ha sido útil no dudes en visitar de vez en cuando el blog de Linube. ¡Gracias!

Couchbase y el esfuerzo por la consolidación NoSQL

Publicado enDesarrollo y Programación

CouchOne, la empresa creadora de CouchDB, y Membase, la empresa madre de Membase Server y Memcached, se han fusionado para crear una nueva iniciativa. El nuevo proyecto recibe el nombre de Couchbase. Desde la fusión, cada una de ellas ha continuado asistiendo y apoyando a sus respectivos proyectos CouchDB, Membase y Memcached. Pero han querido crear este nuevo proyecto de código abierto  para tratar de unir esfuerzos en la dirección de la normalización de las bases de datos no relacionales.

Ahora, la nueva compañía tendrá por CEO al ex-CEO de Membase, Bob Wiederhold. Asimismo, el cofundador y CEO de CouchOne, Damien Katz, será el CTO de la misma. Casualidades de la vida, antes de la fusión, Membase estaba buscando un CTO. Mientras que CouchOne andaba detrás de incorporar un nuevo CEO. Con el nacimiento de Couchbase, todos contentos.

Nuevo panorama en las bases de datos con Couchbase

Esta operación se enmarca en el nuevo escenario que muchas empresas se están encontrando en Estados Unidos, donde ya se habla y se comenta acerca de un posible avance de las bases de datos NoSQL. Para ello, se están basando, en parte, en las decisiones a favor de aplicaciones como FourSquare; a pesar de los problemas que llegan a la hora de escalar. También están tomando como ejemplo determinadas redes sociales entre las que destaca Twitter.

Por el momento, las bases de datos relacionales le sacan mucha ventaja a aquellas no relacionales como NoSQL. Especialmente en el ámbito empresarial donde el uso de bases de datos SQL se encuentra muy por encima de las NoSQL. Y si este es el panorama que tenemos en EEUU, en España, existen muchos consultores y técnicos de sistemas que ni siquiera saben en qué consiste o qué es NoSQL. Es decir, las bases de datos no relacionales, además de en una clara situación de desventaja respecto a las SQL; parece que tendrán que tendrán que pelear duramente su posición en el mercado.

A pesar de lo díficil que en este momento parece todo, tendremos que darle tiempo al proyecto CouchBase. Quién sabe si dentro de unos años el uso de bases de datos NoSQL pueda llegar a equipararse al de SQL y las bases de datos no relacionales pueden convertirse en el tipo de BBDD del futuro. En cualquier caso, habrá que esperar para comprobar si verdaderamente NoSQL es el paso evolutivo natural de las bases de datos.

PDO en la próxima versión del driver de SQL Server para PHP

Publicado enDesarrollo y Programación

Hace unos días podíamos leer que por fin el driver de PHP para trabajar con SQL Server desde PHP contará con soporte para PDO en su versión 2.0.

PDO (PHP Data Objects) es una extensión que permite el acceso a los datos para PHP 5 a través de una capa de abstracción. Esto permite que puedan hacerse consultas a la base de datos de PHP utilizando funciones propias del lenguaje de programación. La extensión fue desarrollada en 2003, aunque no fue estable hasta PHP 5.0 publicado en 2004. Aún tendría que pasar otro año para considerar a PDO estable y que incluyera su primera interfaz por defecto.

Aunque PHP no sea un lenguaje de programación orientado a objetos por sí mismo, sí permite esta funcionalidad. Gracias a la extensión PDO es posible utilizar funciones de extensión regulares para acceder a los datos. Esto es posible debido a la implementación de tecnología orientada a objetos.

Porqué usar PDO

Esta versión del driver de SQL Server es compatible con la API de PDO, aunque se sigue manteniendo la API nativa de SQL Server que existía hasta el momento. De esta forma se ofrece una compatibilidad absoluta entre las dos API. Además de haberse creado una capa común a ambas que permite disponer de las funciones de ambas APIs, tal y como se indica en el gráfico inferior.

La incorporación de este controlador de SQL Server es un gran avance en el desarrollo de la aplicación.  Y también para los desarrolladores que trabajan con PHP bajo entornos Microsoft. Algunos de los ORM más importantes están escritos en PHP; al igual que muchos CMS, como Drupal. Con PDO es más fácil integrar aplicaciones y añadir más funcionalidades a los frameworks más utilizados.

PDO-php-sqlsrv

Por nuestra parte,este servicio aún no está disponible, ya que la versión estable todavía no se ha publicado. En cuanto esté disponible, procederemos a implantar este driver en nuestros servicios de hosting, para ofrecerte siempre el mejor servicio.

Importar una base de datos a SQL Azure (II de II)

Publicado enCloud Hosting Sistemas TI

Anteriormente veíamos cómo importar una base de datos a SQL Azure utilizando un Wizard para ello. En esta ocasión vamos a realizar la operación directamente a través de SQL Server Management Studio (SSMS) generando para ello un script.

Pero, primero deberemos saber si tenemos compatibilidad con Azure. Para ello, tenemos que tener instalada la versión R2 de SQL Server Management Studio.

De local a un script

Para exportar la base de datos en local y llevarla a un script en un formato que sea compatible con Azure, debemos conectarnos desde SSMS a nuestro server local. Una vez realizada la conexión, podremos realizar la exportación de la base de datos en formato Azure. Para ello, utilizaremos el asistente que permite la generación de scripts.

En primer lugar, y una vez dentro de Microsoft SQL Server Management Studio, debemos buscar la base de datos “eventos”. Haciendo click con el botón derecho del ratón, elegiremos tareas > generar scripts de entre las opciones que se despliegan en el menú.

importar una base de datos a sql azure-export

importar una base de datos a sql azure-script

En nuestro caso, vamos a exportar todas las tablas y los usuarios que se encuentran en la base de datos. Si solo necesitas unos datos concretos, este es momento de que lo indiques. De esperar, ya no será posible hacerlo más tarde.

importar una base de datos a sql azure-objetos

En este paso debemos indicar dónde queremos guardar el script que vamos a generar. Para ello, tenemos que acceder a Avanzadas para especificar que queremos exportar en formato para Azure. Así, podremos hacerle saber que queremos incluir tanto el esquema como los datos que se recogen en la base de datos.

importar una base de datos a sql azure-scripting

importar una base de datos a sql azure-opciones

Con esto, nuestro script ya está listo. Ahora, es el momento de iniciar la importación de la base de datos exportada en nuestro servidor SQL Azure.

importar una base de datos a sql azure-resumen

importar una base de datos a sql azure-guardar script

Importar una base de datos a SQL Azure

Una vez hemos descargado la base de datos, deberemos seguir los siguientes pasos para subirla a SQL Azure. Para ello, en primer lugar, debemos conectar nuestro servidor con el servicio SQL Azure iniciando sesión.

SQL Server 2008 R2-importar una base de datos a sql azure

Una vez dentro de nuestra suscripción, y al igual que cuando hemos realizado la importación a través de Wizard, necesitamos crear una nueva base de datos. Como en el anterior tutorial, hemos llamado a esta nueva base de datos “eventos”.

Crear base de datos-importar una base de datos a sql azure

Por último abrimos nuestro script y lo ejecutamos en el servidor SQL Azure. Cuando aparezca el mensaje de que los comandos han sido completados correctamente.

importar una base de datos a sql azure

De esta forma, nuestra base de datos local en SQL Server, ya estará importada en Azure.

importar una base de datos a sql azure-explorador

Aquí termina nuestro tutorial paso a paso de cómo importar una base de datos a SQL Azure. Y ya sabes, no dudes en escribir si tienes alguna duda o consulta; estaremos encantados de atenderte.

ASP.NET con IIS 7.5 y Plesk 9.3

Publicado enGeneral

Ya está disponible la nueva actualización de Plesk; y con ello hemos detectado el siguiente problema tras instalar Plesk 9.3 sobre Windows Server 2008 R2: “ASP.NET no está autorizado para acceder al recurso solicitado” (is not authorized to access the requested resource).


 Server Error in '/mssql' Application.
 --------------------------------------------------------------------------------

 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
 Description: An unhandled exception occurred during the execution of
 the current web request. Please review the stack trace for more
 information about the error and where it originated in the code.

 Exception Details: System.UnauthorizedAccessException: Access is
 denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

 ASP.NET is not authorized to access the requested resource. Consider
 granting access rights to the resource to the ASP.NET request
 identity. ASP.NET has a base process identity (typically
 {MACHINE}ASPNET on IIS 5 or Network Service on IIS 6) that is used if
 the application is not impersonating. If the application is
 impersonating via , the identity will be
 the anonymous user (typically IUSR_MACHINENAME) or the authenticated
 request user.

 To grant ASP.NET access to a file, right-click the file in Explorer,
 choose "Properties" and select the Security tab. Click "Add" to add
 the appropriate user or group. Highlight the ASP.NET account, and
 check the boxes for the desired access.

 Source Error:

 An unhandled exception was generated during the execution of the
 current web request. Information regarding the origin and location of
 the exception can be identified using the exception stack trace below.

 Stack Trace:

 [UnauthorizedAccessException: Access is denied. (Exception from
 HRESULT: 0x80070005 (E_ACCESSDENIED))]

 [FileLoadException: Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]
 System.Reflection.Assembly._nLoad(AssemblyName fileName, String
 codeBase, Evidence assemblySecurity, Assembly locationHint,
 StackCrawlMark&; stackMark, Boolean throwOnFileNotFound, Boolean
 forIntrospection) +0
 System.Reflection.Assembly.nLoad(AssemblyName fileName, String
 codeBase, Evidence assemblySecurity, Assembly locationHint,
 StackCrawlMark&; stackMark, Boolean throwOnFileNotFound, Boolean
 forIntrospection) +43
 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,
 Evidence assemblySecurity, StackCrawlMark&; stackMark, Boolean
 forIntrospection) +127
 System.Reflection.Assembly.InternalLoad(String assemblyString,
 Evidence assemblySecurity, StackCrawlMark&; stackMark, Boolean
 forIntrospection) +142
 System.Reflection.Assembly.Load(String assemblyString) +28

 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String
 assemblyName, Boolean starDirective) +46

 [ConfigurationErrorsException: Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]

 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String
 assemblyName, Boolean starDirective) +613

 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo
 ai) +57

 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection
 compConfig) +178
 System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath
 configPath, Boolean supportLocalization, String outputAssemblyName) +54

 System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean  isPrecompiledApp)
 +232
 System.Web.Compilation.BuildManager.CompileGlobalAsax() +51
 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()  +337

 [HttpException (0x80004005): Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]

 System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
 +58
 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()  +512

 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager
 appManager, IApplicationHost appHost, IConfigMapPathFactory
 configMapPathFactory, HostingEnvironmentParameters hostingParameters)
 +729

 [HttpException (0x80004005): Could not load file or assembly
 'System.ServiceModel, Version=3.0.0.0, Culture=neutral,
 PublicKeyToken=b77a5c561934e089' or one of its dependencies. Access is
 denied.]
 System.Web.HttpRuntime.FirstRequestInit(HttpContext context)  +8897659
 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)  +85

 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest  wr,
 HttpContext context) +333

¿Cómo corregimos el error de ASP.NET?

El error se podía reproducir al tratar de ejecutar una aplicación desde Plesk. En nuestro caso al lanzar el administrador web para bases de datos SQL Server ASP.NET Enterprise Manager o MyLittleAdmin que se ejecutan desde Plesk.

Si tratamos de corregir el error desde la herramienta Plesk Reconfigurator no solucionaremos el problema debido a que los permisos necesarios no están añadidos. Por ello, tendremos que hacerlo a mano.

Lo único que tenemos que hacer es editar el archivo DiskSecurity.xml que encontraremos en la carpeta %PLESK_DIR%etcDiskSecurity y añadirle el siguiente contenido dentro del tag Entries:


<!-- Permisos a Assembly para ASP.NET Enterprise manager -->

<Entry AccounType="1" Account="Psacln" Path="C:Windowsassembly" AceFlags="FilesOnly" AccessMask="Read" EntryFlags="0x0" /&>

Finalmente hay que ejecutar el siguiente comando para que se apliquen los cambios en los permisos:


"%plesk_bin%applysecurity" --apply

 

Recuerda que también ofrecemos servicios para ASP.net MVC y PHP bajo Windows.

Aunque pueda parecer contradictorio debido a los errores que hemos tenido que subsanar, desde Linube te aconsejamos tener siempre SQL Server actualizado.

Importar una base de datos a SQL Azure (I de II)

Publicado enCloud Hosting Sistemas TI

En el siguiente post veremos como subir una base de datos local en SQL Server 2008 al servicio SQL Azure.

Existen varias maneras de importar una base de datos a SQL Azure.

  1. Mediante los servicios de integración de SQL Server 2008 (SSIS).
  2. Usando la utilidad BCP.
  3. Desde el código, usando la clase System.Data.SqlClient.SqlBulkCopy.
  4. Utilizando wizards o scripts para la carga de los datos.

En este artículo, utilizaremos la ultima opción para importar la base de datos.

El cloud de Microsoft

Azure, la nube de Microsoft, tiene algunas limitaciones. Por ejemplo, no permite la importación de bases de datos mediante un “restore” ni tampoco adjuntar una base de datos al servidor SQL de Azure.

Para poder realizar la importación de una base de datos, en primer lugar, es necesario crear un servidor SQL Azure. A continuación, habrá que copiar el nombre del servidor que hemos creado, ya que será necesario conocerlo para saber dónde tenemos que conectarnos.

En nuestro caso, hemos aprovechado para crear una nueva base de datos a la que hemos llamado “eventos”. Esto es un paso opcional, ya que como veremos más adelante es posible crear nuevas bases de datos desde el propio Wizard.  Este permite la creación de hasta 149 bases de datos por servidor SL Azure y con un tamaño máximo de 1 GB ó 10 GB.

Importando una base de datos con SQL Azure

En primer lugar, deberemos acudir a nuestra suscripción de Windows Azure Services. Una vez hayamos iniciado sesión, deberemos pinchar en SQL Azure > Database. Allí podremos ver cuántas bases de datos tenemos en el servidor, cuál es su tipo y qué tamaño ocupan.

 

SQL Azure

 

Al lado de la pestaña Databases, se encuentra la de Firewall Settings. Aquí tenemos que añadir al menos una regla que permita la conexión desde nuestro equipo al servidor, en nuestro caso contamos con 3 reglas diferentes.

Firewall

Ahora utilizaremos SQL Azure Migration Wizard para poder migrar la base de datos. La descarga de esta aplicación está disponible en CodePlesk. Para instalarla, sólo hay que seguir el asistente de instalación. Un proceso tan sencillo que no es necesaria la explicación. Pero por si acaso te surje alguna duda, adjuntamos los pantallazos del proceso.

SQL Migration Wizard 1SQL Azure Migration Manager 2SQL Azure Migration Manager 3SQL Azure Migration Manager 4SQL Azure Migration Manager 5SQL Azure Migration Manager 6SQL Azure Migration Manager 7SQL Azure Migration Manager 8SQL Azure Migration Manager 9

Si tienes instalado Microsoft SQL Server Management Studio R2, puedes conectarte a tu servidor SQL Azure. Y, si no cuentas con esta herramienta, te facilitamos un enlace para que puedas iniciar la descarga.

sql2008R2

En Microsoft SQL Server Management Studio, solo tienes que acudir al explorador de objetos y conectar el servidor. Una vez estés conectado al servidor, deberás abrir la carpeta que lleva el nombre del servidor al que quieres acceder. Y dentro de esta buscar la carpeta que has creado con anterioridad. Recordamos que nosotros le hemos dado el nombre de “eventos”.

SQL 2008 Management Studio R2

¿Buscas otra forma diferente de realizar la importación de una base de datos a SQL Azure? Consulta la segunda parte de cómo importar una base de datos a SQL Azure.

Ejecutar código SQL nativo en Doctrine

Publicado enDesarrollo y Programación

En ocasiones es posible que necesitemos optimizar ciertas consultas SQL. Otras, simplemente, hacer querys algo complejas; incluso es posible que tengamos que lidiar con el código DQL para generar una determinada query. Y en la gran mayoría de las ocasiones, estas acciones pueden llevarnos demasiado tiempo. Para evitarlo, contamos con la posibilidad de ejecutar código nativo desde Doctrine. En este caso, SQL nativo en Doctrine.

El código nativo es el lenguaje que permite el funcionamiento de una máquina. Un lenguaje que puede crearse de dos formas diferentes. Por un lado, es posible desarrollar código nativo para microprocesadores de fácil funcionamiento: Pero, por otra parte, también puede recurrirse al código nativo como código fuente ya compilado y listo para ser utilizado por una determinada máquina. De esta forma, optimizaremos el tiempo que lleva la realización de una consulta a la base de datos.

Cómo ejecutar SQL nativo

Para ejecutar SQL nativo y reducir al máximo el tiempo para realizar una consulta SQL, puedes recurrir a una serie de scripts que te permitan realizar las tareas necesarias.

Empezaremos, en primer lugar, por definir la consulta que vamos a realizar. Para, a continuación, recuperar el singleton de la conexión. El singleton no es más que un patrón de diseño que nos permitirá crear los diferentes objetos que pertenecen a la misma clase o valor de los elementos que componen la base de datos. Su objetivo es asegurar que la clase solo tenga una única instancia y facilitar un punto de acceso de tipo global a la clase.

Una vez realizadas las configuraciones necesarias, pasaremos a ejecutar la consulta. Finalmente, recuperaremos las tuplas de resultados; es decir, una lista ordenada de los elementos que componen las clases.

A continuación, te indicamos cuáles son los scripts que tienes que utilizar para realizar cada una de las tareas necesarias para la ejecución de código nativo SQL desde Doctrine.

//definimos la consulta
$query = "select id from tabla";

//recuperamos el singleton de la conexión
$con = Doctrine_Manager::getInstance()->connection();

//ejecutamos la consulta
$st = $con->execute($query);

//recuperamos las tuplas de resultados
$rs = $st->fetchAll();

Una vez realizado esto, ya podríamos empezar a ejecutar SQL de forma nativa, optimizando así nuestro código. Y, sobre todo, facilitándonos la escritura de nuevo código.

Teniendo en cuenta el tiempo que, en muchas ocasiones, lleva la ejecución de determinadas tareas; unido a las facilidades que ofrece un código ordenado, utilizar este método es todo un acierto. A partir de ahora, solucionar problemas en el código o las bases de datos no solo será más sencillo, sino que requerirá de un tiempo mucho menor.

Conexiones remotas en SQL Server 2008 y 2005

Publicado enSistemas TI

En ocasiones nos encontramos con un SQL recién instalado y la necesidad de conectarnos a él desde un equipo remoto. En estos casos, en primer lugar, si el equipo cliente no cuenta con las herramientas necesarias para SQL Server, el sistema de manejo de bases de datos; deberemos empezar por obtenerlo. Puedes descargar la versión gratuita del administrador de SQL Server 2008, o alguna de sus anteriores versiones. Por si no sabes desde dónde puedes obtener SQL Server, aquí te dejamos los enlaces de descarga.

– Para SQL Server 2005: Microsoft Management Studio Express.

– Para SQL Server 2008: Microsoft 2008 Management Studio Express.

Pero, mejor aún, si lo deseas puedes descargar el Kit de Herramientas de SQL Server Express 2005. Este Kit, además del administrador de SQL Server, incluye una herramienta gráfica de administración. Así como Business Intelligence Development Studio, un entorno de creación y edición de informes que usa SQL Server Reporting Services. Si usas SQL 2008, la descarga más recomendada para ti es Microsoft SQL Server 2008 Express with Advanced Services.

Configurando conexiones remotas en SQL Server 2008

En primer lugar, debemos ir a la utilidad Configuración de superficie de SQL Server 2005 (Surface Area Configuration Utility). Una vez allí, tenemos que acudir a Configuración de superficie para servicios y conexiones y, dentro de esa opción, a conexiones remotas. En esta pestaña deberemos seleccionar Conexiones locales y remotas, además de seleccionar la opción Usar TCP/IP y canalizaciones con nombre.

sql server 2008-2005-configuracion

En seguno lugar, tenemos que acceder a SQL Configuration Manager. Una vez allí, tendremos que abrir la carpeta Configuración de red de SQLEXPRESS > Protocolos de SQLEXPRESS y habilitamos las conexiones TCP/IP, además de las canalizaciones con el nombre de protocolo y su estado.

sql server 2008-configuracion-manager

A continuación, y siguiendo dentro del SQL Configuration Manager > Protocolos de SQL Express > TCP/IP deberemos especificar en las propiedades Direcciones IP > IPALL > Puerto TCP . Aquí, deberás indicar el puerto 1433, o el que tú prefieras habilitar para SQL.

sql server 2008-Protocolos TCP/IP

Cuando hayas especificado el nuevo puerto, es necesario crear una excepción en el firewall, algo similar a esto: C:Archivos de programaMicrosoft SQL ServerMSSQL.1MSSQLBinnsqlsrvr.exe. Y seguidamente, no te olvides de abrir los puertos 1434 (UDP) y 1433 (TCP).

Finalmente, deberás reiniciar el servicio de SQL para que los cambios que has introducido se apliquen de forma correcta. Ahora que las conexiones remotas ya se han configurado, estamos listos para probar la conexión desde el equipo cliente. Si todo funciona de forma correcta, la configuración de SQL Server 2008 habrá finalizado y podremos empezar a conectarnos al sistema de manejo de bases de datos de forma remota.

Si te ha resultado de interés, puedes echar un vistazo a los artículos relacionados Hosting SQL o Interfaz SQL.