sql >> Base de Datos >  >> RDS >> Sqlserver

2 formas de crear una base de datos en un servidor vinculado usando T-SQL

Una forma de crear una base de datos en un servidor vinculado es simplemente saltar a ese servidor y crearlo localmente.

Pero probablemente te sentirías un poco engañado si lo incluyera como una de las "2 formas" de crear una base de datos en un servidor vinculado.

Además, aunque esa opción está bien si puede y está dispuesto a hacerlo, este artículo le muestra cómo hacerlo de forma remota usando T-SQL, sin tener que saltar al servidor local. Además, es posible que encuentre esta técnica más rápido que saltar al otro servidor.

Ambas "2 formas" involucran el EXECUTE declaración (que también se puede acortar a EXEC ). Podemos usar esta declaración para ejecutar código en el servidor vinculado, y eso incluye crear una base de datos en él.

Requisito previo

La ejecución de procedimientos almacenados en un servidor vinculado requiere que habilite RPC Out (si aún no está habilitado).

Puede verificar si RPC Out está habilitado consultando sys.servers vista de catálogo.

El siguiente código habilita RPC Out en un servidor vinculado llamado Homer :

EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';

Una vez que esté habilitado, podemos continuar y crear la base de datos.

Método 1

Este es el primer método para crear una base de datos en el servidor vinculado.

EXEC ('CREATE DATABASE Pets') AT Homer;

En este ejemplo, creo una base de datos llamada Pets en un servidor vinculado llamado Homer .

El EXECUTE /EXEC La declaración se puede utilizar para enviar comandos de transferencia a servidores vinculados.

Para hacer esto, incluya el comando de transferencia entre paréntesis después de EXECUTE /EXEC palabra clave, luego continúe con AT LinkedServerName , donde LinkedServerName es el nombre del servidor vinculado en el que desea crear la base de datos.

Por lo tanto, todo lo que tenemos que hacer es incluir nuestro CREATE TABLE declaración como un argumento a esta declaración.

Tenga en cuenta que el nombre del servidor vinculado es el nombre que le dio cuando creó el servidor vinculado. No es el nombre real del servidor del servidor remoto.

Método 2

El segundo método es similar al primero, excepto que en este caso pasamos nuestro comando al sp_executesql procedimiento almacenado del sistema en el servidor remoto.

EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';

Para hacer esto, necesitamos usar el nombre de cuatro partes, que incluye el nombre del servidor vinculado. Si no hiciéramos esto, terminaríamos ejecutando sp_executesql en nuestro servidor local en lugar del servidor remoto.

Pasar la Declaración como una Variable

También puede pasar el CREATE DATABASE declaración como una variable para el EXEC declaración.

Así:

DECLARE @tsql nvarchar(max);
SET @tsql = 'CREATE DATABASE Pets';
EXEC (@tsql) AT Homer;

Aunque, si intenta cambiar a la base de datos y crear las tablas, es posible que tenga problemas, incluso si agrega GO en los lugares habituales. Probablemente se deba a que GO La palabra clave en realidad no es parte de T-SQL y solo la reconocen ciertas utilidades.

Por lo tanto, es posible que deba ejecutar un script independiente para crear las tablas.