none
Rodar Create Table e Create Procedures à partir de arquivo SQL RRS feed

  • Pergunta

  • Pessoal


    eu tenho um arquivo .sql, onde existem vários create table's e create procedure's, que eu preciso rodar no SQL.

    a pergunta é a seguinte:

    tem como eu rodar os comandos de um arquivo sql ou txt em transact? tipo um

    Execute 'C:\script1.sql'


    algo assim...

    eu tentei sqlcmd, mas não funciona no transact...

    se alguém souber, valeu....


    ps.: só pra quem ficar se perguntando o porque disso, estou desenvolvendo uma ferramenta em C#, e preciso selecionar o arquivo sql, e fazer ele rodar o comando em transact...
    terça-feira, 23 de setembro de 2008 19:11

Respostas

  • Olá Anderson,

     

    Eu sinceramente não faria isso a partir do Transact. Se o SQLCMD faz isso eu optaria por utilizá-lo. Em todo caso, você pode usar a xp_cmdshell e rodar o SQLCMD. Ex:

     

    Code Snippet
    exec
    xp_cmdshell 'sqlcmd <parametros>'

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 23 de setembro de 2008 19:13

Todas as Respostas

  • Olá Anderson,

     

    Eu sinceramente não faria isso a partir do Transact. Se o SQLCMD faz isso eu optaria por utilizá-lo. Em todo caso, você pode usar a xp_cmdshell e rodar o SQLCMD. Ex:

     

    Code Snippet
    exec
    xp_cmdshell 'sqlcmd <parametros>'

     

     

    [ ]s,

     

    Gustavo

    terça-feira, 23 de setembro de 2008 19:13
  • Anderson,

     

    Concordo com o Gustavo, eu também não executarei este arquivo através de comandos T-SQL, faria uso do SQLCMD,

     

    Procure mais informações e exemplos no Books On-Line do SQL Server!!!

     

     

    terça-feira, 23 de setembro de 2008 19:32
  • beleza, nem tem problema, porque bloqueamos aqui o xp_cmdshell por motivos de segurança... o problema é que preciso por isso na minha aplicação dm C#, porque o C# fica tentando executar linha por linha do script que tem coisas como

    create table [tabela](

    coluna1 int,
    coluna2 int
    )


    algo assim... entao fica dando erro, a menos que o meu script fosse plano, em uma linha só...

    e o problema do sqlcmd é que não consigo usar ele na minha aplicação, por questões de infra também... mas eu vou tentar achar outra solução, valeu pessoal...
    terça-feira, 23 de setembro de 2008 20:49
  • Olá Anderson,

     

    A equipe de desenvolvimento aqui em uma das empresas que presto consultoria está passando pelo mesmo problema. Ela precisa desenvolver uma aplicação de intranet que aplique scripts na base de forma a auditar o que está se fazendo. A idéia é fantástica, mas de cara nas primeiras tentativas, esbarrou-se em problemas como o seu.

     

    Minha recomendação foi que eles utilizassem o SMO, já que ele possui métodos de aplicar scripts a partir de um arquivo e pode ser utilizado em um aplicação .NET. Dê uma olhada nos links abaixo:

     

    http://wardyit.com/blog/blog/archive/2006/11/24/169.aspx
    http://www.sqljunkies.com/WebLog/marathonsqlguy/archive/2006/05/16/21027.aspx

     

    Adicione o namespace Microsoft.SqlServer.Management.Smo em suas aplicações para trabalhar com SMO.

     

    Vale a pena lembrar que o Fabiano fez um Webcast sobre esse assunto.

     

    [ ]s,

     

    Gustavo

    terça-feira, 23 de setembro de 2008 20:55
  • bah cara, valeu pelas respostas, vou dar uma olhada sim...

    muito obrigado...
    quarta-feira, 24 de setembro de 2008 15:19