Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2)

Имеется excel-файл (2003). Импортирую через мастер импорта-экспорта в нужную мне базу в такую-то таблицу. Как я понял в процессе импорта создаётся ssis-package, я выбрал сохранить его в инстансе sql server-а. Выгрузка прошла как надо.

Вопросы:

1) После выгрузки как теперь к нему обратиться и повторно запустить, не могу увидеть в каком меню? Т.е. если в исходный excel-файл добавили данные в таблицу (строки, структура не меняется), то нужно выгрузку повторно делать.
2) Привязан ли этот package к файлу? Т.е. этот файл должен лежать всегда в одном месте и называться так, же как был?
3) Можно ли эту выгрузку автоматизировать при изменении файла? Или поставить на исполнение раз в неделю/месяц? Где и как это делается?
4) Пока делаю всю выгрузку на тестовом сервере (windows server 2008 32-bit). В дальнейшем нужно подобное повторить на windows server 2008 r2 64-bit, будут ли там какие-то сложности в связи с 64-bit?
9 ноя 11, 13:43    [11569299]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
up
9 ноя 11, 17:47    [11571472]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition on Windows NT 6.0 <X86> (Build 6002: Service Pack 2)

Имеется excel-файл (2003). Импортирую через мастер импорта-экспорта в нужную мне базу в такую-то таблицу. Как я понял в процессе импорта создаётся ssis-package, я выбрал сохранить его в инстансе sql server-а. Выгрузка прошла как надо.

Вопросы:

1) После выгрузки как теперь к нему обратиться и повторно запустить, не могу увидеть в каком меню? Т.е. если в исходный excel-файл добавили данные в таблицу (строки, структура не меняется), то нужно выгрузку повторно делать.
2) Привязан ли этот package к файлу? Т.е. этот файл должен лежать всегда в одном месте и называться так, же как был?
3) Можно ли эту выгрузку автоматизировать при изменении файла? Или поставить на исполнение раз в неделю/месяц? Где и как это делается?
4) Пока делаю всю выгрузку на тестовом сервере (windows server 2008 32-bit). В дальнейшем нужно подобное повторить на windows server 2008 r2 64-bit, будут ли там какие-то сложности в связи с 64-bit?


Если процедура будет повторяться, то, на мой взгляд, лучше сделать ssis-package примерно так (см.вложение), задэплоить сей пакет на сервер и вызывать джобом из SQL Agent с необходимым расписанием. Если в пакете задать конфигурационную таблицу или файл/переменную - можно будет удобно менять имя импортируемого файла и соединения с сервером (если вздумается перенести на другой).

К сообщению приложен файл. Размер - 34Kb
9 ноя 11, 18:39    [11571814]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Погоди, погоди, по порядку.
Во-первых, я этот пакет то не могу найти через Management Studio.
Во-вторых, что значит "задэплоить"? Где там задается конф. таблица и файл/переменная?
Из рисунка я понимаю так, что в мастере импорта приемником нужно указать OLE DB Provider for SQL Server ?
Поподробнее, пожалуйста, я в этом деле ньюб.
10 ноя 11, 05:04    [11573091]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
Погоди, погоди, по порядку.
Во-первых, я этот пакет то не могу найти через Management Studio.
Во-вторых, что значит "задэплоить"? Где там задается конф. таблица и файл/переменная?
Из рисунка я понимаю так, что в мастере импорта приемником нужно указать OLE DB Provider for SQL Server ?
Поподробнее, пожалуйста, я в этом деле ньюб.

По-порядку.
1. В Visual Studio или в BIDS создаем пакет.
2. Прописываем диспетчера соединений (Connection Managers). В твоем случае это Excel CM (для файла-источника) и OLE DB CM (для получателя).
3. Создаем Data Flow: источник-получатель. При этом создается таблица получатель на SQL Server.
4. Разворачиваем пакет на сервере (лучше использовать BIDS Helper http://bidshelper.codeplex.com ) в определенную папку. Там мы его и найдем из MMSM (в подключении к SSIS сервера путь типа такого MSSQLSERVER\MSDB\Наш_пакет).
5. В SQL Server Agent создаем Job и Task в нем с типом SQL Server Integration Services Package, ставим расписание (Schedules). И все.

PS: Внутри всех этих действий много телодвижений, но это: http://msdn.microsoft.com/ru-ru/library/ms141711(v=SQL.105).aspx и далее по тексту BOL поможет тебе разобраться. Успехов!
10 ноя 11, 12:06    [11573610]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Выгружаю данные о контрагентах из excel 2003 в таблицу Contragent бд Contract.
Сделал пункты 1-3, нажимаю F5 (Debug). Выдает ошибку Error Data Flow Task Columns 'НаименКонтрагента' and 'ContragentName' cannot convert between unicode and non-unicode string data types.

И ещё вопрос, созданный пакет dtsx, как мне его в SSMS отобразить/загрузить, чтоб в Agent на job поставить?
14 ноя 11, 13:36    [11592741]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Может получателя указать тогда SQL Server Destination?
14 ноя 11, 13:40    [11592783]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
http://msdn.microsoft.com/ru-ru/library/ms137592.aspx
14 ноя 11, 13:40    [11592789]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Import/Export Wizard тоже с ошибкой, но там можно игнорить их:

[Source Information]
Source Location : C:\ШЕРП\kontr.xls
Source Provider : Microsoft.Jet.OLEDB.4.0
Table: `Лист1$`
Column: Контрагент
Column Type: VarChar
SSIS Type: Unicode string [DT_WSTR]
Mapping file (to SSIS type): C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\JetToSSIS.xml

[Destination Information]
Destination Location : WIN-T7OPC7A7LNG\SQLSERVER
Destination Provider : SQLNCLI10
Table: [dbo].[Contragent]
Column: ContragentShortName
Column Type: varchar
SSIS Type: string [DT_STR]
Mapping file (to SSIS type): C:\Program Files\Microsoft SQL Server\100\DTS\MappingFiles\MSSQLToSSIS10.XML
14 ноя 11, 13:45    [11592832]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Такие проблемы к сожалению с SSIS - постоянно. Выход - прямо в запросе к источнику делать конвертирование в формат получателя и промаппить колонки вход-выход.
14 ноя 11, 15:25    [11593822]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Если не получится (не знаю как там с Excel..) - есть компонент Data Conversion (нужно будет настроить конвертацию). Тогда схема будет: Excel Source - Data Conversion - OLE DB Destination / SQL Server Destination.
14 ноя 11, 15:28    [11593859]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
thx AlexMajic

Сделал Excel Source - Data Conversion - OLE DB Destination.
Только вот вопрос, в Data Conversion Transformation Editor колонка Data Type есть string[DT_STR] и text stream[DT_TEXT], какой выбирать? Я посмотрел в таблицу приемник, для колонки контрагента тип varchar(250). Попробовал string, ОК прошло без ошибок. И в OLE DB Destination в маппингах тогда нужно выбирать Copy of ... А так всё норм.
15 ноя 11, 08:35    [11596983]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Создал пакет в файловую систему. Запустил sql agent, создал job с 1 шагом, добавил туда свой ssis package, запустил. Start success, Execute error. Но тем не менне я проверил таблицу в бд, он строки то добавил. В чём глюк?
Смотреть, как я понимаю, надо в Error Logs? Там запись с крестом:

Date 15.11.2011 13:09:39
Log SQL Server Agent (Current - 15.11.2011 13:09:00)

Message
[364] The Messenger service has not been started - NetSend notifications will not be sent

Т.е. он отрабатывает шаги нормально, а это какие то мелкие заморочки?
Тогда сразу вопрос, я делал это на 32битном серваке, можно ли перенести этот пакет на 64-бита?
15 ноя 11, 09:31    [11597066]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
thx AlexMajic

Сделал Excel Source - Data Conversion - OLE DB Destination.
Только вот вопрос, в Data Conversion Transformation Editor колонка Data Type есть string[DT_STR] и text stream[DT_TEXT], какой выбирать? Я посмотрел в таблицу приемник, для колонки контрагента тип varchar(250). Попробовал string, ОК прошло без ошибок. И в OLE DB Destination в маппингах тогда нужно выбирать Copy of ... А так всё норм.

Я сделал себе табличку (где-то в BOL можно найти) по типам данных SQL-Server - SSIS. Для этого типа:
SSIS Data TypeSQL Server Data Type
DT_STR char/varchar
15 ноя 11, 12:08    [11598159]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
Создал пакет в файловую систему. Запустил sql agent, создал job с 1 шагом, добавил туда свой ssis package, запустил. Start success, Execute error. Но тем не менне я проверил таблицу в бд, он строки то добавил. В чём глюк?
Смотреть, как я понимаю, надо в Error Logs? Там запись с крестом:

Date 15.11.2011 13:09:39
Log SQL Server Agent (Current - 15.11.2011 13:09:00)

Message
[364] The Messenger service has not been started - NetSend notifications will not be sent

Т.е. он отрабатывает шаги нормально, а это какие то мелкие заморочки?
Тогда сразу вопрос, я делал это на 32битном серваке, можно ли перенести этот пакет на 64-бита?

Ну, ошибку лучше посмотреть в профайлере.
Насчет запуска пакета из 64-битной системы - стоит почитать: http://msdn.microsoft.com/ru-ru/library/ms141766.aspx
15 ноя 11, 12:12    [11598215]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
А как сделать так, чтобы при каждом запуске пакета заносились только новые записи, т.е. чтобы не было дублирующихся записей?
15 ноя 11, 12:34    [11598411]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
А как сделать так, чтобы при каждом запуске пакета заносились только новые записи, т.е. чтобы не было дублирующихся записей?

копать в сторону компонентов Merge Transformation http://msdn.microsoft.com/ru-ru/library/ms141703.aspx и SCD (Slowly Changing Dimension Transformation) http://msdn.microsoft.com/ru-ru/library/ms141715.aspx в зависимости от ситуации.
15 ноя 11, 13:19    [11598836]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Понять не могу, чего он ошибку выдал, но запись в таблицу произвел? Вот запись из History job-а:

Date 15.11.2011 13:15:23
Log Job History (job_kontr)

Step ID 0
Server WIN-F1OPC5B3LKT\SQLSERVER
Job Name job_kontr
Step Name (Job outcome)
Duration 00:00:02
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0

Message
The job failed. The Job was invoked by User WIN-F1OPC5B3LKT\qwerty. The last step to run was step 1 (step1).
15 ноя 11, 13:59    [11599245]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
а из среды разработки если запустить пакет - есть ошибка?
15 ноя 11, 15:02    [11599965]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
в BIDS Debug > Start debugging проходит без ошибок
16 ноя 11, 06:22    [11603255]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Тогда стОит развернуть пакет на сервере, а не запускать из файловой системы, причем если уровень защиты стоит EncryptSensitivewithUserKey - при импорте (в визарде импорта) поменять на уровень защиты сервера. Скорее всего на защиту он и ругается сейчас, а поскольку как таковых sensitive данных нету - выполняется.
16 ноя 11, 12:17    [11604622]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Пытаюсь изменить св-во Security > Protection level с EncryptSensitivewithUserKey на ServerStorage, выдаёт:


Failure saving package.
------------------------------
ADDITIONAL INFORMATION:

Failed to apply package protection with error 0xC0014061 "The protection level, ServerStorage, cannot be used when saving to this destination. The system could not verify that the destination supports secure storage capability.". This error occurs when saving to Xml.
(Package)
16 ноя 11, 12:44    [11604884]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Rudge
Пытаюсь изменить св-во Security > Protection level с EncryptSensitivewithUserKey на ServerStorage, выдаёт:

а я не говорил, что его нужно изменять в пакете....
собственно, если не стоит BIDS Helper, то пакет импортируется на сервер так:
открываем SSMS, коннектимся к SSIS на сервере, там - правый клик по папке Stored Packages\MSDB; выбираем Import Package...
и уже там указываем Protection Level как на рисунке

К сообщению приложен файл. Размер - 51Kb
16 ноя 11, 13:21    [11605372]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
Rudge
Member

Откуда:
Сообщений: 274
Вопросы:
1) Есть таблица excel с платежными реквизитами контрагента(у одного контрагента может быть неск-ко реквизитов), мне нужно занести контрагентов в свою таблицу в бд, чтобы не было дублирования.
2) Можно же выгрузить данные из txt, где табуляция отделяет записи? Просто в списке Data Source не вижу txt.
23 ноя 11, 14:24    [11644616]     Ответить | Цитировать Сообщить модератору
 Re: Импорт Excel > MS SQL 08 через мастер. Вопросы  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Как так - "табуляция отделяет записи"? Может всё же табуляция разделяет поля?
23 ноя 11, 14:31    [11644693]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить