Marko Zivkovic

Cómo crear un servidor vinculado a una base de datos SQL de Azure

July 30, 2019 by

Los servidores asociados y vinculados a una base de datos, permiten acceder a los datos de otro servidor SQL u otra fuente de datos (por ejemplo, Excel) mediante el uso de SQL Server Management Studio (SSMS) o Transact-SQL.

Este artículo expondrá y explicará cómo crear y configurar un servidor asociado y vinculado para recuperar datos de una base de datos SQLde Azure. Por otra parte también, explicaremos cómo resolver algunos problemas / problemas comunes durante el proceso de creación de un servidor vinculado a una base de datos SQL de Azure.

Genere o cree un servidor vinculado a una base de datos SQL de Azure a través de SSMS

Para tal fin es importante crear un servidor vinculado a través de SSMS, para ello vaya al Explorador de objetos en la carpeta Objetos del servidor, luego haga clic con el botón derecho en la carpeta Servidores vinculadosy, en el menú contextual, debe elegir el comando Nuevo servidor vinculado:

Se abrirá la ventana Nuevo servidor vinculado:

En esta ventana, lo primero que debe hacerse es designar e ingresar un nombre para un servidor vinculado en el cuadro Servidor vinculado y elegir el tipo de servidor haciendo clic en el botón Servidor de SQL u Otra fuente de datos en la pestaña General.

Primero debemos elegir el botón de opción de SQL Server en la sección Tipo de servidor y veamos qué ocurrirá. Además, en la pestaña General del cuadro Servidor vinculado, debe ingresar el nombre del servidor SQL de Azure para el cual se crea un servidor vinculado:

En la pestaña Seguridad, seleccione el botón de opción Realizar con este contexto de seguridad e ingrese las credenciales de usuario que existen en el servidor de Azure:

Recuerde que puede encontrar más información sobre la pestaña Opciones de seguridad y servidor en el artículo Cómo crear y configurar un servidor vinculado en SQL Server Management Studio.

Después de ingresar las credenciales de usuario, debe presionar el botón Aceptar para crear un servidor vinculado a una base de datos SQL de Azure. Ahora, en la carpeta Servidores vinculados, aparecerá el servidor vinculado de Azure que creamos y en la carpeta Catálogos, se enumerarán todas las bases de datos disponibles:

Pero, es importante indicar que cuando se necesita expandir una base de datos en particular (por ejemplo, una base de datos de prueba) para ver las tablas de la base de datos, aparecerá el siguiente mensaje de error:

Error al recuperar los datos para esta solicitud. (Microsoft.SqlServer.Management.Sdk.Sfc)

INFORMACIÓN ADICIONAL:

Se produjo una excepción al ejecutar una instrucción o lote Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

La referencia a la base de datos y/o el nombre del servidor en ‘TestDatabase.sys.sp_tables_rowset2’ no se admite en esta versión de SQL Server. (Microsoft SQL Server, Error: 40515)

Note que este error se produce porque Azure no permite alterar la base de datos maestra. Para resolver esto, se debe conectar directamente a la base de datos de Azure que va a utilizar.

Elimine el servidor vinculado de SQL Azure que creamos y cree uno nuevo:

Esta vez, en la sección Tipo de servidorde la pestaña General, debe elegir el botón de opción Otra fuente de datos. El nombre del servidor vinculado en el cuadro de texto Servidor vinculado puede ser, esta vez, lo que quiera (por ejemplo, AZURE SQL DATABASE). En el cuadro desplegable Proveedor, es importante elegir el elemento Microsoft SQL Server OLE DB Provider. En el cuadro de texto Fuente de datos, ingrese el nombre de SQL Azure (por ejemplo, server.database.windows.net). La configuración más importante para crear correctamente un servidor vinculado a una base de datos SQL de Azure es ingresar el nombre en el cuadro de texto Catálogo(por ejemplo, TestDatabase) de una base de datos SQL de Azure para la que desea crear un servidor vinculado a una base de datos SQL de Azure. Caso contrario, si este campo se deja vacío, nos encontraremos con el mismo error 40515al intentar obtener una lista de las tablas en la carpeta Catálogos.

Verifique que bajo la pestaña Seguridad, use la misma configuración que usamos en el ejemplo anterior y presione el botón OK. Esto permitirá crear un servidor vinculado a una base de datos SQL de Azure (base de datos TestDatabase), y cuando se presione el signo más (+) al lado de la carpeta Tablas, la carpeta Tablas se expandirá y mostrará todas las tablas para la base de datos TestDatabase:

Para recuperar datos de la tabla de SQL Azure (por ejemplo, CustomerAddress), debe escribir el siguiente código:

Si todo va bien, los datos de la tabla CustomerAddress aparecerán en la cuadrícula de resultados:

Ahora bien, si intenta ejecutar un procedimiento almacenado desde el servidor vinculado de AZURE SQL DATABASE, puede aparecer el siguiente mensaje:

Msg 7411, Nivel 16, Estado 1, Línea 48 El servidor ‘AZURE SQL DATABASE’ no está configurado para RPC.

Esto se debe a que las opciones RPC y RCP Out (llamada a procedimiento remoto) los que permiten llamar a los procedimientos remotos desde el servidor vinculado o al servidor vinculado de manera predeterminada, están configurados en falso.

Recuerde que para solucionarlo, haga clic con el botón derecho en el servidor vinculado AZURE SQL DATABASE, y debe elegir las opciones de Propiedades:

En la pestaña Opciones del servidor, establezca las opciones RPC y RPC Out en Verdadero:

O en un editor de consultas, pegue y ejecute el siguiente código:

Función OPENQUERY

Es posible manejar la función OPENQUERY para que se puede usar para obtener datos del servidor vinculado ejecutando un código como este:

Los resultados serán los mismos que en el ejemplo anterior.

Es importante indicar que este es el método ad hoc para la conexión a un servidor remoto mediante el servidor vinculado y la consulta de datos desde un servidor remoto. Por otra parte, si la conexión al servidor remoto se usa con frecuencia, recuerde que usar el servidor vinculado es una mejor solución en lugar de usar la función OPENQUERY.

Esta función se puede utilizar en la cláusula FROM de la instrucción INSERT, SELECT, DELETE o UPDATE.

Cree un servidor vinculado a una base de datos SQL de Azure usando Transact-SQL

Para crear un servidor vinculado a una base de datos SQL de Azure, debe escribir el siguiente código en un editor de consultas:

Es posible además el poder encontrar más información sobre cómo configurar un servidor vinculado mediante T-SQL en Cómo crear, configurar y eliminar un servidor vinculado de SQL Server mediante la página Transact-SQL.

Conectarse a la base de datos SQL de Azure y consultar datos utilizando las consultas distribuidas

Para conectarse a la base de datos de Azure SQL y acceder a los datos sin crear primero un servidor vinculado, se debe usar las funciones OPENROWSET u OPENDATASOURCE de T-SQL.

Para abrir una conexión y consultar datos de la base de datos SQL de Azure mediante la función OPENROWSET, recuerde escribir el siguiente código en un editor de consultas:

Si, por alguna razón, el código anterior no funcionara, deberá usar el siguiente código para conectarse y consultar datos de la base de datos SQL de Azure:

Otra manera de conectar y consultar datos de la base de datos SQL de Azure se efectúa mediante la función OPENDATASOURCE.

En un editor de consultas, pegue y ejecute uno de los siguientes códigos:

O

Error común que puede ocurrir al usar las funciones OPENROWSET y OPENDATASOURCE de T-SQL:

Msg 15281, Nivel 16, Estado 1, Línea 1

Note que SQL Server bloqueó el acceso a STATEMENT ‘OpenRowset / OpenDatasource’ del componente ‘Ad Hoc Distributed Queries debido a que este componente está desactivado como parte de la configuración de seguridad de este servidor. Un administrador del sistema puede habilitar el uso de “Consultas distribuidas ad hoc” usando sp_configure. Recuerde que para obtener más información sobre cómo habilitar “Consultas distribuidas ad hoc”, busque “Consultas distribuidas ad hoc” en los Libros de SQL Server

Para resolver esto, la opción Consultas distribuidas ad hoc debe estar habilitada. Para poder habilitar la opción Consultas distribuidas ad hoc, se debe usar el procedimiento sp_configure y en un editor de consultas, pegue y ejecute el siguiente código:

Artículos anteriores de esta serie:

Marko Zivkovic
168 Views