DbCommand не может запустить несколько команд SQL в одном ExecuteNonQuery () - PullRequest
3 голосов
/ 06 июня 2011

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

С 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 ]

1 голос
/ 06 июня 2011

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

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

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

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

0 голосов
/ 06 июня 2011

Попробуйте добавить 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';" 
...