Произошла ошибка при разборе запроса. [Token line number] sql ошибка при создании таблицы - PullRequest
1 голос
/ 13 мая 2011

Привет, ребята, я пытаюсь создать таблицы в sql compact.

Вот запрос:

CREATE TABLE [dbo.A] 
(
    Id nvarchar(37) NOT NULL CONSTRAINT Info_PK PRIMARY KEY,
    ImportDate datetime NOT NULL        
);

CREATE TABLE [dbo.B]
(
    Id uniqueidentifier PRIMARY KEY,
        DeviceId smallint,

);

Но он выдает ошибку в строке, где онпытается создать таблицу B.

Ответы [ 4 ]

3 голосов
/ 13 мая 2011

Не используйте dbo.Схемы не поддерживаются в SQL CE.И вам может потребоваться выполнить ваши запросы отдельно.

Вот аналогичная проблема и решение: http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/d6f1db96-8724-4376-990e-3f6da18c2d08/

0 голосов
/ 13 июля 2015

Несмотря на то, что пакет с несколькими запросами работает в SQL Server Management Studio, он не будет работать с SqlCeCommand.

Вы должны разделить свой пакет на несколько запросов (вы можете использовать транзакцию, чтобы выполнить все запросы или не выполнять их). Я рекомендую использовать ExecuteNonQuery, так как он не использует курсор (что может привести к ошибке в транзакции).

Вы можете использовать следующий пример.

Using connexion As New SqlCeConnection(connexionstring)
            connexion.Open()
            Dim transaction As SqlCeTransaction = connexion.BeginTransaction()
            Try
                Dim batch As String = GetCommandText()
                For Each query In batch.Split(";")
                    If Not String.IsNullOrWhiteSpace(query) Then
                        Dim command As New SqlCeCommand(query, connexion, transaction)
                        command.ExecuteNonQuery()
                    End If
                Next
                transaction.Commit()
            Catch ex As Exception
                transaction.Rollback()
                Throw
            End Try
        End Using
0 голосов
/ 13 мая 2011

Я гуглил это, и похоже, что вы используете SQL CE (для дальнейшего использования всегда полезно сообщить нам, какую реализацию SQL вы используете).

Скобки [] не поддерживаются в качестве разделителей в CE. Попробуйте удалить их из имен таблиц.

0 голосов
/ 13 мая 2011

Я бы удалил запятую после DeviceId smallint

CREATE TABLE [dbo.A]
( Id nvarchar(37) NOT NULL CONSTRAINT Info_PK PRIMARY KEY,             
ImportDate datetime NOT NULL
);

CREATE TABLE [dbo.B] ( Id uniqueidentifier PRIMARY KEY, DeviceId smallint
);
...