DbCommand не может запустить несколько команд SQL в одном ExecuteNonQuery()

Здравствуйте, у меня есть следующая проблема, и я не могу ее решить.

С DbCommand Я пытаюсь выполнить этот оператор SQL

Dim strCommnad As String = 
"CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +                                 
"CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine +
"EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';"

command.CommandText = strCommnad              
command.CommandType = CommandType.Text                
command.ExecuteNonQuery()

но я всегда получаю это сообщение об ошибке

Неверный синтаксис рядом с ключевым словом "CREATE".

Но когда я запускаю каждую команду из strCommand автономный то все работает нормально.

Я использую VS 2010 Professional и SQL Server 2008 R2 Express.

Спасибо за любую помощь.

2 ответа

Я не совсем уверен, что вы пытаетесь сделать - но ваш подход кажется слишком сложным...

Вы, кажется, добавляете DEFAULT пункт к вашему XLibPKID колонка - верно? это ALTER TABLE Заявление должно сделать это тоже:

command.CommandText = 
   "ALTER TABLE [dbo].[DOMAIN_XLibPKID_D]  " +
   "    ADD CONSTRAINT DF_XLibPKID DEFAULT (0) FOR XLibPKID";
command.ExecuteNonQuery()

Это просто добавляет отдельный DEFAULT CONSTRAINT к вашему столу.

Попробуйте добавить GO между каждым утверждением:

Dim strCommnad As String =  "CREATE DEFAULT [dbo].[DOMAIN_XLibPKID_D] AS (0);" + Environment.NewLine +
"GO; CREATE TYPE [dbo].[XLibPKID] FROM BIGINT NOT NULL;" + Environment.NewLine + 
"GO; EXEC sp_bindefault 'DOMAIN_XLibPKID_D', 'XLibPKID';" 
Другие вопросы по тегам