none
Erro com comando DDL no ADO.NET RRS feed

  • Pergunta

  • Prezados,

     

    tenho um command cujo objetivo é criar um novo database, qdo rodo o comando pelo management studio do sql funciona perfeitamente, agora qdo rodo pelo código

    recebo o seguinte erro: System.Data.SqlClient.SqlException (0x80131904): Sintaxe incorreta próxima a 'GO'.
    Sintaxe incorreta próxima a 'GO'.
    O banco de dados 'NSCompliance.BN-14062011' não existe. Certifique-se de que o nome tenha sido digitado corretamente.

     

    E realmente o banco não existe é um banco novo que quero criar, agora alguem me explica porq via SSMS funciona e via código C# não...o erro ocorre na linha

          SqlCommand command = new SqlCommand(comando, connection);
                        command.ExecuteNonQuery();

    No ExecuteNonQuery....alguem sabe porque?

     

    Meu comando DDL inicia-se assim:

     


    CREATE DATABASE [Meubanco] ON  PRIMARY
    ( NAME = N'Meubanco', FILENAME = N'C:\Projeto Compliance\Meubanco.mdf' , SIZE = 45056KB , MAXSIZE = UNLIMITED)
    LOG ON
    ( NAME = N'Meubanco_log', FILENAME = N'C:\Projeto Compliance\Meubanco_log.LDF' , SIZE = 6912KB , MAXSIZE = UNLIMITED)
    GO

    SET QUOTED_IDENTIFIER OFF;
    GO
    USE [Meubanco];
    GO
    IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
    GO


    Frederico Miranda
    terça-feira, 14 de junho de 2011 19:00

Respostas

  • Prezados,

     

    tenho um command cujo objetivo é criar um novo database, qdo rodo o comando pelo management studio do sql funciona perfeitamente, agora qdo rodo pelo código

    recebo o seguinte erro: System.Data.SqlClient.SqlException (0x80131904): Sintaxe incorreta próxima a 'GO'.
    Sintaxe incorreta próxima a 'GO'.
    O banco de dados 'NSCompliance.BN-14062011' não existe. Certifique-se de que o nome tenha sido digitado corretamente.

     

    E realmente o banco não existe é um banco novo que quero criar, agora alguem me explica porq via SSMS funciona e via código C# não...o erro ocorre na linha

          SqlCommand command = new SqlCommand(comando, connection);
                        command.ExecuteNonQuery();

    No ExecuteNonQuery....alguem sabe porque?

     

    Meu comando DDL inicia-se assim:

     


    CREATE DATABASE [Meubanco] ON  PRIMARY
    ( NAME = N'Meubanco', FILENAME = N'C:\Projeto Compliance\Meubanco.mdf' , SIZE = 45056KB , MAXSIZE = UNLIMITED)
    LOG ON
    ( NAME = N'Meubanco_log', FILENAME = N'C:\Projeto Compliance\Meubanco_log.LDF' , SIZE = 6912KB , MAXSIZE = UNLIMITED)
    GO

    SET QUOTED_IDENTIFIER OFF;
    GO
    USE [Meubanco];
    GO
    IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
    GO


    Frederico Miranda

    Frederico, o "GO" pelo que sei é um termo especial somente utilizado pelo management studio do SQL que informa que a instrução anterior deve ser executada, no seu código que irá execultar pelo ADO troque os GO por ";" (ponto e vírgula), faça um teste.

     


    Abraço

    Estevam
    Siga luizestevamb on Twitter

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quarta-feira, 15 de junho de 2011 13:29

Todas as Respostas

  • Frederico,

    Nunca tive essa necessidade, tenta tirar a linha dos arquivos .mdf e .ldf e exeutar para ver se resolve, acho que essas linha podem ser geradas dinâmicamente e depois podem ser atulizadas em caminhos que você desejar.

    Tenta fazer esse teste.

    Espero ter ajudado,

    Abraços,

    Leandro Rodrigues

     


    Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida
    quarta-feira, 15 de junho de 2011 01:51
  • Prezados,

     

    tenho um command cujo objetivo é criar um novo database, qdo rodo o comando pelo management studio do sql funciona perfeitamente, agora qdo rodo pelo código

    recebo o seguinte erro: System.Data.SqlClient.SqlException (0x80131904): Sintaxe incorreta próxima a 'GO'.
    Sintaxe incorreta próxima a 'GO'.
    O banco de dados 'NSCompliance.BN-14062011' não existe. Certifique-se de que o nome tenha sido digitado corretamente.

     

    E realmente o banco não existe é um banco novo que quero criar, agora alguem me explica porq via SSMS funciona e via código C# não...o erro ocorre na linha

          SqlCommand command = new SqlCommand(comando, connection);
                        command.ExecuteNonQuery();

    No ExecuteNonQuery....alguem sabe porque?

     

    Meu comando DDL inicia-se assim:

     


    CREATE DATABASE [Meubanco] ON  PRIMARY
    ( NAME = N'Meubanco', FILENAME = N'C:\Projeto Compliance\Meubanco.mdf' , SIZE = 45056KB , MAXSIZE = UNLIMITED)
    LOG ON
    ( NAME = N'Meubanco_log', FILENAME = N'C:\Projeto Compliance\Meubanco_log.LDF' , SIZE = 6912KB , MAXSIZE = UNLIMITED)
    GO

    SET QUOTED_IDENTIFIER OFF;
    GO
    USE [Meubanco];
    GO
    IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
    GO


    Frederico Miranda

    Frederico, o "GO" pelo que sei é um termo especial somente utilizado pelo management studio do SQL que informa que a instrução anterior deve ser executada, no seu código que irá execultar pelo ADO troque os GO por ";" (ponto e vírgula), faça um teste.

     


    Abraço

    Estevam
    Siga luizestevamb on Twitter

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quarta-feira, 15 de junho de 2011 13:29
  • Prezados,

     

    tenho um command cujo objetivo é criar um novo database, qdo rodo o comando pelo management studio do sql funciona perfeitamente, agora qdo rodo pelo código

    recebo o seguinte erro: System.Data.SqlClient.SqlException (0x80131904): Sintaxe incorreta próxima a 'GO'.
    Sintaxe incorreta próxima a 'GO'.
    O banco de dados 'NSCompliance.BN-14062011' não existe. Certifique-se de que o nome tenha sido digitado corretamente.

     

    E realmente o banco não existe é um banco novo que quero criar, agora alguem me explica porq via SSMS funciona e via código C# não...o erro ocorre na linha

          SqlCommand command = new SqlCommand(comando, connection);
                        command.ExecuteNonQuery();

    No ExecuteNonQuery....alguem sabe porque?

     

    Meu comando DDL inicia-se assim:

     


    CREATE DATABASE [Meubanco] ON  PRIMARY
    ( NAME = N'Meubanco', FILENAME = N'C:\Projeto Compliance\Meubanco.mdf' , SIZE = 45056KB , MAXSIZE = UNLIMITED)
    LOG ON
    ( NAME = N'Meubanco_log', FILENAME = N'C:\Projeto Compliance\Meubanco_log.LDF' , SIZE = 6912KB , MAXSIZE = UNLIMITED)
    GO

    SET QUOTED_IDENTIFIER OFF;
    GO
    USE [Meubanco];
    GO
    IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
    GO


    Frederico Miranda

    Frederico, o "GO" pelo que sei é um termo especial somente utilizado pelo management studio do SQL que informa que a instrução anterior deve ser executada, no seu código que irá execultar pelo ADO troque os GO por ";" (ponto e vírgula), faça um teste.

     


    Abraço

    Estevam
    Siga luizestevamb on Twitter

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***

    É isso mesmo, o GO é um comando do Management Studio. Se você substitui no seu código o GO por ; vai funcionar.

    Abs,

    Diego Marques

    sábado, 28 de janeiro de 2017 22:03