none
Gerar script DDL automático dos Bancos! RRS feed

  • Pergunta

  • Srs.,

    No MSSQLserver2000 eu utilizava o "scptxfr.exe" para gerar o script ddl de todos os meus bancos. No MSSQLserver2008R2 este objeto não faz parte. Gostaria de saber se existe algo parecido com ele para automatizar esta rotina!!!


    MCP: Designing and Implementing Databases with Microsoft® SQL Server™ 2000 MCP: Installing, Configuring, and Administering Microsoft® SQL Server™ 2000 MCP: Managing and Maintaining a Microsoft Windows Server 2003 Environment MCTS: Microsoft SQL Server 2005 - Implementation and Maintenance MCTS: Microsoft SQL Server 2008 - Implementation and Maintenance MCTS: Configuring Microsoft Windows Vista Wireshark Certified Network Analyst

    segunda-feira, 19 de março de 2012 18:05

Respostas

  • Srs.,

    Cansei de procurar e resolvi criar por conta uma rotina que gere o script ddl de todas as procedures, funções e views!!

    Segue o codigo:

     

    1º -> Cria as tabelas

    CREATE TABLE [dbo].[OBJETOS](
    [idi] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](50) NOT NULL
    ) ON [PRIMARY]


    GO


    CREATE TABLE [dbo].[OBJETOSTXT](
    [COLUNA] [varchar](8000) NULL
    ) ON [PRIMARY]


    GO

    2º-> Cria a procedure:

    create proc P_GERA_DDL

    as

    declare @min int
    declare @max int
    declare @nome varchar(100)
    declare @sqlstr varchar(400)
    declare @sqlstr2 varchar(400)
    declare @database varchar(100)
    declare @data varchar(100)


    insert into OBJETOS 

    select name from sysobjects
    where xtype like 'P'
    or xtype like 'FN'
    or xtype like 'V'




    select @min=MIN(idi) from OBJETOS
    select @max=MAX(idi) from OBJETOS




    while (select(@min)) < @max
    begin

    select @nome=name from OBJETOS
    where idi = @min

    set @sqlstr = 'insert into OBJETOSTXT
     exec sp_helptext '+@nome

    exec (@sqlstr)

    insert into OBJETOSTXT
    select 'go'

    insert into OBJETOSTXT
    select '--==============================================================--'

    select @min = @min + 1
    end 

    select @database=db_name()

    select @data=replace(replace(convert(varchar(100),GETDATE(),113),':',''),' ','')

    set @sqlstr2= 'exec xp_cmdshell ''sqlcmd -d '+ @database+' -Q "select * from OBJETOSTXT" -W -o C:\'+@database+'_'+@data+'.txt'''

    exec(@sqlstr2)




    truncate table OBJETOS
    truncate table OBJETOSTXT

    go


    MCP: Designing and Implementing Databases with Microsoft® SQL Server™ 2000 MCP: Installing, Configuring, and Administering Microsoft® SQL Server™ 2000 MCP: Managing and Maintaining a Microsoft Windows Server 2003 Environment MCTS: Microsoft SQL Server 2005 - Implementation and Maintenance MCTS: Microsoft SQL Server 2008 - Implementation and Maintenance MCTS: Configuring Microsoft Windows Vista Wireshark Certified Network Analyst

    • Marcado como Resposta Diogo Pettres sexta-feira, 23 de março de 2012 18:24
    sexta-feira, 23 de março de 2012 18:24

Todas as Respostas

  • Diogo, boa tarde.

    Vc pode gerar os seus scripts DDL automaticamente clicando com o botão direito no banco ---> Tasks --> Generate Scripts --> Selecione o banco e marque a opção-- >Script all objects in the selected database

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    segunda-feira, 19 de março de 2012 18:53
  • Eduardo,


    Eu gostaria de fazer um job automatizado para realizar esta tarefa, e alem disto, eu tenho 60 bases!!!


    MCP: Designing and Implementing Databases with Microsoft® SQL Server™ 2000 MCP: Installing, Configuring, and Administering Microsoft® SQL Server™ 2000 MCP: Managing and Maintaining a Microsoft Windows Server 2003 Environment MCTS: Microsoft SQL Server 2005 - Implementation and Maintenance MCTS: Microsoft SQL Server 2008 - Implementation and Maintenance MCTS: Configuring Microsoft Windows Vista Wireshark Certified Network Analyst

    segunda-feira, 19 de março de 2012 18:56
  • Diogo,

    Veja se estes links ajudam: http://www.sqlservercentral.com/articles/Administration/howtoscheduleasqlserverdatabasecreationscript/1834/

    http://www.sqlservercentral.com/Forums/Topic647768-146-1.aspx

    http://social.msdn.microsoft.com/Forums/en-US/sqlsmoanddmo/thread/f5bb4f5a-e21f-4a2a-a055-9abae26a1135


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quinta-feira, 22 de março de 2012 16:05
    Moderador
  • Srs.,

    Cansei de procurar e resolvi criar por conta uma rotina que gere o script ddl de todas as procedures, funções e views!!

    Segue o codigo:

     

    1º -> Cria as tabelas

    CREATE TABLE [dbo].[OBJETOS](
    [idi] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](50) NOT NULL
    ) ON [PRIMARY]


    GO


    CREATE TABLE [dbo].[OBJETOSTXT](
    [COLUNA] [varchar](8000) NULL
    ) ON [PRIMARY]


    GO

    2º-> Cria a procedure:

    create proc P_GERA_DDL

    as

    declare @min int
    declare @max int
    declare @nome varchar(100)
    declare @sqlstr varchar(400)
    declare @sqlstr2 varchar(400)
    declare @database varchar(100)
    declare @data varchar(100)


    insert into OBJETOS 

    select name from sysobjects
    where xtype like 'P'
    or xtype like 'FN'
    or xtype like 'V'




    select @min=MIN(idi) from OBJETOS
    select @max=MAX(idi) from OBJETOS




    while (select(@min)) < @max
    begin

    select @nome=name from OBJETOS
    where idi = @min

    set @sqlstr = 'insert into OBJETOSTXT
     exec sp_helptext '+@nome

    exec (@sqlstr)

    insert into OBJETOSTXT
    select 'go'

    insert into OBJETOSTXT
    select '--==============================================================--'

    select @min = @min + 1
    end 

    select @database=db_name()

    select @data=replace(replace(convert(varchar(100),GETDATE(),113),':',''),' ','')

    set @sqlstr2= 'exec xp_cmdshell ''sqlcmd -d '+ @database+' -Q "select * from OBJETOSTXT" -W -o C:\'+@database+'_'+@data+'.txt'''

    exec(@sqlstr2)




    truncate table OBJETOS
    truncate table OBJETOSTXT

    go


    MCP: Designing and Implementing Databases with Microsoft® SQL Server™ 2000 MCP: Installing, Configuring, and Administering Microsoft® SQL Server™ 2000 MCP: Managing and Maintaining a Microsoft Windows Server 2003 Environment MCTS: Microsoft SQL Server 2005 - Implementation and Maintenance MCTS: Microsoft SQL Server 2008 - Implementation and Maintenance MCTS: Configuring Microsoft Windows Vista Wireshark Certified Network Analyst

    • Marcado como Resposta Diogo Pettres sexta-feira, 23 de março de 2012 18:24
    sexta-feira, 23 de março de 2012 18:24