Usuário com melhor resposta
Rodar Create Table e Create Procedures à partir de arquivo SQL

Pergunta
-
Pessoaleu 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 umExecute '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...
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 Snippetexec xp_cmdshell 'sqlcmd <parametros>'[ ]s,
Gustavo
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 Snippetexec xp_cmdshell 'sqlcmd <parametros>'[ ]s,
Gustavo
-
-
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 comocreate 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...
-
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.aspxAdicione 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
-