Mover procedimentos armazenados de um banco de dados para outro no SQL Server

4

Estou usando o SQL Server 2008 e gostaria de copiar procedimentos armazenados de um banco de dados para outro. Como?

    
por ala 15.07.2009 / 15:57

7 respostas

8

Clique com o botão direito no SP sob o DB e clique em Script Stored Procedure As > CRIAR Para > Arquivo, ele criará um arquivo de script SQL e executará esse script no outro banco de dados.

    
por 15.07.2009 / 16:29
5

Basta usar o Management Studio para gerar um script para os procedimentos armazenados, salvar o script em um arquivo e executá-lo no outro SQL Server.

Da memória, clique com o botão direito do mouse no banco de dados e, em Todas as Tarefas, Gere Scripts ou algo parecido. Isso produzirá o Transact-SQL para criar o que você selecionar.

JR

    
por 15.07.2009 / 16:06
3

Aqui está uma consulta (definir saída para texto) para retornar os procedimentos armazenados:

SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE'
    
por 16.07.2009 / 18:16
1

Existem opções no SSMS para também gerar permissões para os usuários - isso é útil.

Ferramentas > opções > scripting

Você também pode criar vários scripts clicando em 'procedimentos armazenados' no painel Explorador de Objetos e depois selecionando procedimentos na janela Detalhes do Pesquisador de Objetos. Clique com o botão direito nos procedimentos selecionados e você está pronto para ir.

Eu prefiro o SQL Compare do redgate.

    
por 16.07.2009 / 23:57
1

As respostas acima são boas e funcionam. A questão é (no meu mundo, de qualquer forma): onde estão seus sprocs?

No meu caso, temos um kit de sprocs no db do aplicativo (lógica de negócios, etc.) e outro conjunto de sprocs de gerenciamento do sistema no master.

O kicker para mim é ter que mover (e manter em sincronia) os sprocs no master ....

    
por 22.07.2009 / 15:51
1

Você pode copiar todo o banco de dados, incluindo Stored Prcedures, talvez seja o que você precisa:

Em Ms SQL Server Managment studio - > Clique com o botão direito na base de dados de origem, vá para o menu "Tasks" e selecione "Copy Database".

Isso criará uma cópia completa da fonte, incluindo tabelas, dados e Precedências Armazenadas.

    
por 10.10.2011 / 19:30
1

@Ash Machine tem uma boa ideia, mas ele usa a consulta errada, o que limita o resultado retornado para nvarchar (4000).

Use em vez disso

Select definition from sys.sql_modules where object_id = object_id('<procname>')

e você obtém a definição completa não-truncada.

Na maioria dos casos práticos, isso funciona nas GUIs, como SSMS, quando você usa saída para texto e configura a coluna máxima de caracteres pro para 8192. Se algumas linhas forem mais largas que 8192, isso falhará. Mas note que isso é uma limitação da ferramenta de consulta e não da consulta. Essa limitação também entrou no SQLServer 2012.

Usando o ADO.NET, talvez por meio do PowerShell, como em SQLPSX sqlise , você pode obter a definição completa.

Se você quiser apenas armazenar backups da definição do procedimento em alguma tabela do mesmo banco de dados, ele também funciona

    
por 04.01.2012 / 09:48