2014-12-12 2 views
-1

Я использую пакет SSIS для импорта данных из листа excel в SQL DB. В конфигурационном файле я использую следующие переменные.Динамическая строка соединения, не работающая в пакете SSIS 2008R2

Name     scope  DataType Value 
---------------------------------------------------- 
DBName    package String  DB_Master 
Password    package String  xx 
UserName    package String  sa 
ServerName   package String  xxx.xxx.x.xx 
SqlConnectionString package String  DataSource=xxx.xxx.x.xxx;UserID=sa;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Initial Catalog=DB_Master;Password=xx 

правой кнопкой мыши OLEDB ConnectionManager выберите окно свойств ниже значения назначить

ConnectionString - Initial Catalog=DB_Master;DataSource=xxx.xxx.x.xxx;UserID=sa;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False; 

DelayValidation - True 

Expressions  -ConnectionString - @[User::SqlConnectionString] 

В SqlConnectionString окно свойств переменной ниже значения присвоить

EvaluateAsExpression -True 
Expression    -"DataSource=" + @[User::ServerName] + ";UserID=" + @[User::UserName] + ";Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;Initial Catalog=" + @[User::DBName] + ";Password=" + @[User::Password] 

После развертывания файла пакета я изменить DBName в SqlConnectionString DB_Master для мастера, но пакет выполняет файлы в DB_Master.

, а также если я выдаю неверное имя сервера, например 198.152.1, но пакет успешно выполнен.

Пожалуйста, скажите мне, где я совершил ошибку. что пошло не так ...?

+0

Я не знаю, в чем проблема, но вы можете упростить это путем _just_ присвоения свойства строки подключения. Он уже содержит все эти другие значения. Вам не нужно это выражение конкатенации строк, просто назначьте строку соединения непосредственно из конфига. Затем измените БД только в этом конфиге. –

+1

Как вы меняете имя dbName в строке соединения? Вы обновляете строку соединения или переменную? Как вы изменяете значение в переменной? С конфигурацией? Использование/set? –

+0

@MarkWojciechowicz Я изменяю имя dbname в строке соединения с помощью переменной DBName. Я не знаю, как обновить строку подключения. Я изменяю значение переменной, вводя значения в строку соединения. – Gurunathan

ответ

0

@gurunathan проверяет выходные данные на наличие предупреждений о том, что конфигурации не установлены. Когда конфигурации не найдены, вместо этого используются значения времени разработки.

При развертывании пакета с манифестом файл Config автоматически не развертывается. Вам нужно будет скопировать файл dtsconfig на ваш целевой сервер на путь, указанный вами в пакете. То есть C: \ MySsisConfigs \ configfile.dtsconfig

В качестве альтернативы вы можете использовать переменную окружения для косвенной конфигурации. Это упрощает развертывание в разных средах. Here's Ссылка на это.

Обратите внимание, что если вы начинаете добавлять переменные окружения, обязательно перезапустите связанные службы - SSIS или sql-агент, если вы в конечном итоге запланируете его таким образом. Службы кэшируют значения переменных среды при запуске.

EDIT: Были проблемы с конфигурацией: - строка подключения была установлена ​​в выражении на основе других переменных, но также была задана конфигурацией пакета. - строка подключения недействительна, поэтому используются значения времени разработки. Источником данных был DataSource, и безопасность была установлена ​​как для интегрированной безопасности, так и для передачи имени пользователя и пароля.

Советует, что если вы используете конфигурацию пакета в диспетчере соединений, а диспетчер соединений нарушается при открытии пакета, что-то не так.

+0

Я использую переменные, как показано ниже. https://anothersqlgeek.wordpress.com/2013/03/28/ssis-dynamic-connections-part-1/comment-page-1/#comment-48, но это не работает для меня. – Gurunathan

+0

У вас есть предупреждения при запуске пакета? Если да, связаны ли они с конфигурациями? Где находится ваш файл конфигурации на целевом сервере? –

+0

Предупреждений во время работы нет. Файл конфигурации (dtsconfig) присутствует в bin \ Развертывание после сборки проекта. По умолчанию я создаю файл конфигурации внутри папки проекта. – Gurunathan

0

Я нашел решение для своей проблемы. С помощью Mark Wojciechowicz. Спасибо, Марк.

ниже внесенные изменения.

  1. Удалить Комплексную безопасность из строки подключения
  2. Put пространство между Источник данных в строке подключения
  3. Удалите выражение для ConnectionString Variable (набор EvaluateAsExpression в False)
  4. Удалить следующие переменные - ServerName, UserName, Пароль, DBName.

    Data Source = xxx.xxx.x.xxx; ID пользователя = хх; Provider = SQLNCLI10.1; Авто Перевести = False; Initial Catalog = Test; Password = ххххххх

теперь работает и показать ошибки для неверного идентификатора пользователя и пароля.