Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

2 maneiras de criar um banco de dados em um servidor vinculado usando T-SQL


Uma maneira de criar um banco de dados em um servidor vinculado é simplesmente pular para esse servidor e criá-lo localmente.

Mas você provavelmente se sentiria um pouco enganado se eu incluísse isso como uma das “2 maneiras” de criar um banco de dados em um servidor vinculado.

Além disso, embora essa opção seja boa se você puder e estiver disposto a fazê-lo, este artigo mostra como fazê-lo remotamente usando T-SQL, sem ter que pular para o servidor local. Além disso, você pode achar essa técnica mais rápido do que pular para o outro servidor.

Ambas as “2 maneiras” envolvem o EXECUTE instrução (que também pode ser abreviada para EXEC ). Podemos usar essa instrução para executar código no servidor vinculado, e isso inclui a criação de um banco de dados nele.

Pré-requisito


A execução de procedimentos armazenados em um servidor vinculado exige que você habilite RPC Out (se ainda não estiver habilitado).

Você pode verificar se o RPC Out está habilitado consultando o sys.servers visualização do catálogo.

O código a seguir habilita o RPC Out em um servidor vinculado chamado Homer :
EXEC sp_serveroption 'MyLinkedServer', 'rpc out', 'true';

Uma vez ativado, podemos prosseguir e criar o banco de dados.

Método 1


Aqui está o primeiro método para criar um banco de dados no servidor vinculado.
EXEC ('CREATE DATABASE Pets') AT Homer;

Neste exemplo, crio um banco de dados chamado Pets em um servidor vinculado chamado Homer .

O EXECUTE /EXEC pode ser usada para enviar comandos de passagem para servidores vinculados.

Para fazer isso, inclua o comando de passagem entre parênteses após o EXECUTE /EXEC palavra-chave, então siga com AT LinkedServerName , onde LinkedServerName é o nome do servidor vinculado no qual você deseja criar o banco de dados.

Portanto, tudo o que precisamos fazer é incluir nosso CREATE TABLE afirmação como um argumento para esta afirmação.

Observe que o nome do servidor vinculado é o nome que você deu ao criar o servidor vinculado. Não é o nome real do servidor remoto.

Método 2


O segundo método é semelhante ao primeiro, exceto que neste caso passamos nosso comando para o sp_executesql procedimento armazenado do sistema no servidor remoto.
EXEC Homer.master.dbo.sp_executesql N'CREATE DATABASE World;';

Para fazer isso, precisamos usar o nome de quatro partes, que inclui o nome do servidor vinculado. Se não fizéssemos isso, acabaríamos executando sp_executesql em nosso servidor local em vez do servidor remoto.

Passe o extrato como uma variável


Você também pode passar o CREATE DATABASE declaração como uma variável para o EXEC demonstração.

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

Embora, se você tentar mudar para o banco de dados e criar as tabelas, poderá ter problemas, mesmo se adicionar GO nos lugares habituais. Provavelmente porque o GO A palavra-chave não faz parte do T-SQL e é reconhecida apenas por determinados utilitários.

Portanto, talvez seja necessário executar um script separado para criar as tabelas.