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.