Я пытаюсь создать представление источника данных SSIS 2008, которое считывает данные из базы данных Ingres через драйвер ODBC для Ingres. Я скачал Ingres 10 Community Edition, чтобы получить драйвер ODBC, установить его, настроить сервер доступа к данным и DSN на сервере с SSIS.
Если я подключусь к SQL Server 2008 Database Engine на сервере, на котором работает SSIS, я могу получить данные из Ingres через ODBC DSN, выполнив следующую команду:
SELECT *
FROM OPENROWSET( 'MSDASQL'
, 'DSN=IngresODBC;UID=testuser;PWD=testpass'
, 'SELECT * FROM iitables')
Так что я совершенно уверен, что настройка ODBC верна.
Если я попытаюсь выполнить тот же запрос с кавычками идентификаторов в стиле SQL Server, я получу сообщение об ошибке, поскольку Ingres не поддерживает этот синтаксис.
SELECT *
FROM OPENROWSET( 'MSDASQL'
, 'DSN=IngresODBC;UID=testuser;PWD=testpass'
, 'SELECT * FROM [iitables]')
Ошибка: «[Ingres] [Драйвер ODBC Ingres 10.0] [Ingres 10.0] строка 1, неожиданный символ '['.".
Я обнаружил, что я получаю ту же ошибку при попытке добавить таблицы из Ingres в представление источника данных служб SSIS. Начальный этап выбора ODBC-провайдера работает нормально, и мне показывают список таблиц / представлений для добавления. Затем я выбираю любую таблицу и пытаюсь добавить ее в представление и получаю «ОШИБКА [5000A] [Ingres] [Драйвер ODBC Ingres 10.0] [Ingres 10.0] строка 3, неожиданный символ '['.".
Следуя предложению Эда Харпера о создании именованного запроса, также кажется, что он заблокирован. Если я добавлю в свой именованный запрос следующий текст:
SELECT *
FROM "iitables"
Я все еще получаю сообщение об ошибке: «ОШИБКА [5000A] [Ingres] [Драйвер ODBC Ingres 10.0] [Ingres 10.0] строка 2, неожиданный символ '['".
В соответствии с ошибкой текст запроса, переданный службами SSIS в ODBC, был:
SELECT [iitables].*
FROM
(
SELECT *
FROM "iitables"
)
AS [iitables]
Похоже, что SSIS предполагает, что символы кавычек допустимы, когда это не так. Как я могу убедить это не использовать их? Допустимы двойные кавычки.