Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

@fabiosantosrj

[Resolvido] Executar script no banco de dados através do C#

Recommended Posts

Olá pessoal,

 

Preciso executar um arquivo *.sql no banco de dados através do c#.

 

O arquivo tem o nome c:\banco.sql;

A variavel db é um DataContext;

 

Eu chamo o arquivo pelo comando abaixo

 

	string script = File.ReadAllText("c:\\banco.sql");
	int id = db.ExecuteCommand(script);

 

O conteúdo do arquivo possui os dados abaixo:

 

USE [master]
GO
CREATE DATABASE [iDENTIFICACAO] ON PRIMARY 
( NAME = N'IDENTIFICACAO', FILENAME = N'C:\IDENTIFICACAO.mdf' , SIZE = 7168KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON 
( NAME = N'IDENTIFICACAO_log', FILENAME = N'C:\IDENTIFICACAO_log.ldf' , SIZE = 1536KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
EXEC dbo.sp_dbcmptlevel @dbname=N'IDENTIFICACAO', @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [iDENTIFICACAO].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [iDENTIFICACAO] SET ANSI_NULL_DEFAULT OFF 
GO

 

O objetivo é criar um banco de dados e executar vários outros comandos de criação de tabelas e inserção de alguns dados que não estão aparecendo no script acima.

 

O problema é que o db.executecommand() dá erro ao executar o script pq nao aceita os comandos "GO e Alter " gerando a mensagem abaixo

 

"

Message: Incorrect syntax near 'GO'.

Incorrect syntax near the keyword 'ALTER'.

Incorrect syntax near 'GO'.

"

O script eu sei que está perfeito pq executo ele pelo Sql Management Studio e funciona numa boa.

Mas, preciso executá-lo pelo C#. Ele é um gerador de banco de dados.

O usuário tem permissão para criar porque é o mesmo usuario que utilizo no Sql Management Studio.

Sendo assim, o problema está realmente como diz a mensagem usando o GO, Create, Alter...

 

Como fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvido.

 

no DOS existe o comando abaixo que faz com que execute scripts ddl e dml sem problemas.

 

sqlcmd -S MEU_SERVIDOR\SQLEXPRESS -e -U MEU_LOGIN -P MINHA_SENHA -i MEU_ARQUIVO.sql

 

se alguém souber de uma forma que não precisa usar o DOS, eu agradeço

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.