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.