Parece que no puedo ejecutar SQL que crea una base de datos usando un objeto DbCommand. ¿Qué estoy haciendo mal? Aquí está mi código:¿Cómo ejecutar SQL con comentarios y declaraciones GO usando SqlConnection?
DbConnection connection; // initialized and opened elsewhere
DbCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
aquí es el error:
The query syntax is not valid., near term '/', line 1, column 2. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.EntitySqlException: The query syntax is not valid., near term '/', line 1, column 2.
Aquí está la primera parte del archivo. La excepción se produce con respecto a sólo los comentarios sobre la primera línea:
/****** Object: Table [dbo].[User] Script Date: 10/08/2009 12:14:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[User](
[Id] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NULL,
[EmailAddress] [nvarchar](100) NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Esta misma secuencia de comandos SQL se ejecuta muy bien desde SQL Management Studio Express (de hecho esa aplicación genera este guión!). Es solo la vista de consulta de Server Explorer de Visual Studio y de mi propio código que parece fallar.
Nota: GO no es un comando SQL, es un comando para la herramienta de cliente (como OSQL, el analizador de consultas, o en este caso SMSS.) Para romper la secuencia de comandos en lotes separados" ". Cada lote es una llamada separada al servidor. –
Posible duplicado de [Ejecutar un script SQL grande (con comandos GO)] (http://stackoverflow.com/questions/40814/execute-a-large-sql-script-with-go-commands) –