2013-03-28 6 views
2

Я использую SSIS в Visual Studio 2012, работающий с базой данных SQL Server 2012. Я получаю ошибку, показанную ниже при использовании OLE DB Source. Этот OLE DB Source выполняет SQL, аналогичный показанному ниже. Когда я удаляю инструкцию GO в конце, пакет SSIS выполняется нормально.SSIS: «Неверный синтаксис рядом с« GO ».» error

В SQL Server Management Studio SQL выполняется нормально, независимо от того, присутствует ли инструкция GO.

Источник OLE DB выполняется в рамках задачи потока данных.

Почему эта ошибка GO вызывает эту ошибку при выполнении в пакете SSIS и что делать с этим? Огромное спасибо.

Ошибка:

[OLE DB Source from SQL variable [33]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E14. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 Description: "Statement(s) could not be prepared.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E14 Description: "Incorrect syntax near 'GO'.".

SQL:

/* Test statement */ 
SELECT 'test' as N'test' 
GO 
+5

'GO' не является допустимым TSQL ключевое слово. Он просто используется клиентскими инструментами, такими как SSMS, как разделитель партий. Они не отправляют 'GO' на SQL Server. –

ответ

11

GO пакетный терминатор и использовать его в качестве источника OLE DB, как сообщение об ошибке указывает, является неверным.

2

Ваш SQL является:

SELECT 'test' as N'test' 
GO 

GO это командная строка вещь - удалить ее при переходе SQL на сервер с помощью OLE.
Попробуйте только это:

SELECT 'test' as N'test' 
+0

«N» является допустимым синтаксисом, хотя на самом деле не требуется в этом случае, поскольку псевдоним просто использует символы ASCII. например 'SELECT 'Foo', поскольку N'''' отлично работает. –

+0

@MartinSmith OK спасибо (nuked от ответа). Я никогда не использовал MSSQL. Приветствия. Хороший персонаж кстати! – Bohemian

-2

Похожие лучшие практики: Используйте точку с запятой, как заявление T-SQL terminator.Although точку с запятой не требуется для большинства операторов в данной версии SQL Server, то необходимо будет в будущая версия.

http://msdn.microsoft.com/en-us/library/ms177563.aspx 
+0

Может кто-нибудь объяснить, что не так в этом предложении? Использование полуколонии - это предложение, предлагаемое во всех заявлениях t-sql как внутри SSIS, так и в других местах Microsoft (ссылка выше) и всех связанных с SQL Server собраний. –