Как изменить символ кавычки идентификатора в SSIS для подключения к ODBC DSN - PullRequest
0 голосов
/ 23 апреля 2010

Я пытаюсь создать представление источника данных 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 предполагает, что символы кавычек допустимы, когда это не так. Как я могу убедить это не использовать их? Допустимы двойные кавычки.

1 Ответ

0 голосов
/ 23 апреля 2010

Я не знаю способа изменить указанный в кавычках идентификатор, но вы можете обойти это, создав пустой DSV (щелкнув по мастеру DSV без добавления каких-либо таблиц), вместо добавления таблиц в DSV напрямую, добавляя их в качестве именованных запросов (щелкните правой кнопкой мыши пустой DSV и выберите «Новый именованный запрос».

Это позволяет вам самостоятельно контролировать текст запроса и устанавливать собственные идентификаторы.

(я делаю это предложение на основе SSIS 2005, но я думаю, что 2008 год работает аналогичным образом.)

...