Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
Добрый день. Моя задача скриптом на сервер "B" перенести данные с таблицы сервера "A". Я соединил сервера через linked server.

Таблица простая, два поля - GID (guid) и FileCode (varbinary(max)). В таблице хранятся разные файлы.

Скрипт такой
INSERT INTO FileStore
                      (GID, FileCode)
SELECT     FileStoreView.GID, FileStoreView.FileCode
FROM         FileStore RIGHT OUTER JOIN
                      Storage.ABCData.dbo.FileStoreView AS FileStoreView ON FileStore.GID = FileStoreView.GID
WHERE     (FileStore.ID IS NULL)	


Вся эта конструкция падает с ошибкой

Поставщик OLE DB "SQLNCLI11" для связанного сервера "Storage" вернул сообщение "Ошибка протокола в потоке TDS".
Поставщик OLE DB "SQLNCLI11" для связанного сервера "Storage" вернул сообщение "Ошибка связи".
Сообщение -1, уровень 16, состояние 1, строка 0
Поставщик сеансов: Физическое подключение недоступно [xFFFFFFFF].
Поставщик OLE DB "SQLNCLI11" для связанного сервера "Storage" вернул сообщение "Ошибка связи".
Сообщение -1, уровень 16, состояние 1, строка 0
Поставщик сеансов: Физическое подключение недоступно [xFFFFFFFF].
Поставщик OLE DB "SQLNCLI11" для связанного сервера "Storage" вернул сообщение "Ошибка связи".
Сообщение 10054, уровень 16, состояние 1, строка 0
Поставщик TCP: Удаленный хост принудительно разорвал существующее подключение.


Даже когда я пытаюсь делать
 SELECT TOP (1) GID, FileCode FROM Storage.ABCData.dbo.FileStoreView


Хотя просто
SELECT GID FROM Storage.ABCData.dbo.FileStoreView
,т.е. если не указывать поле блобовское - то все работает шустро.

Подскажите как это решать. Я так понимаю это проблемы с настройкой сети. Как мне правильно объяснить системщикам, что сервер в порядке и ошибка в ваших каких-то настройках. Может подскажите где именно копать и как грамотно им объяснить и направить в нужное русло, чтобы проблема решилась как можно быстрее.
16 авг 13, 04:13    [14716216]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
Пришлите версии сервера источника и приёмника, и размер таблиц.

Думаю что join таблиц лучше бы выполнить локально на сервере приёмнике, т.е. сначала сделать импорт данные в пустую временную таблицу на сервере приёмники и затем уже выполнять запрос локально.

Второй вариант использовать SSIS.

Третий вариант: полная архивация базы на сервере А и восстановление на сервере B, тогда linked server вообще не придётся использовать.

Проблема может из-за того, что varbinary(max) или разные версии серверов или collation. может таблицы уж очень большие....
16 авг 13, 04:26    [14716220]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
на двух серверах стоит sql server 2012 express. версии идентичные

проблема даже выбрать одну запись SELECT TOP (1) GID, FileCode FROM Storage.ABCData.dbo.FileStoreView что уж говорить про заполнение временной таблички.

хотя на моем домашнем хоть 1000 выбирай. проблем нет. А на домашнем 2008 сервер стоит

этот скрипт должен делаться каждую ночь, для переноса недостающих файлов. Сама база больше трех гигов. За сутки файлов новых 200-300 может быть а может и всего 5.

Я тоже думал насчет SSIS, но никогда им не пользовался. Может кто подскажет как простую на вид операцию (sql срипт я привел) сделать на сис. Потому, что открыв его вообще не ясно что куда и как. Куча каких-то блоков, глаза разбегаются. Максимум что осилил, кинуть два подключения на текущий сервер и удаленный. Хотя наверное это в отдельную тему вынести нужно.
16 авг 13, 04:42    [14716223]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
почему бы не сделать транзакционную репликацию между двумя таблицами, можно сделать перенос данных в режиме реального времени (задержки по опыту секунды) или по расписанию каждую ночь. Тогда ни Linked server, ни запросы, ни регулярное задание городить не нужно будет. Единственное условиие сделать primary key на таблицы...
16 авг 13, 04:50    [14716224]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
SSIS можно написать, но Ваш случай уж очень простой, неинтересно будет заниматься. По поводу репликации можно здесь посмотреть [url=]http://technet.microsoft.com/en-us/library/ms151176.aspx[/url]
16 авг 13, 04:54    [14716226]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
sql сервер 2012 express позволяет создавать только подписчиков для репликации а распространителей нет. поэтому тут не настроить никакую репликацию
16 авг 13, 04:57    [14716227]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
мне интересно начать в сис с простого случая. а там глядишь на простом примере пойму как там все устроено и как писать более сложные вещи.
16 авг 13, 05:01    [14716229]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
может настало время подумать об обновлении версии, в стандартной версии MS SQL сервера уже есть поддержка репликации. С SSIS пакетом Вам придётся всё равно сделать задание, отслеживать его выполнение, для быстрого инкрементального обновления думаю придётся расширить таблицу новой колонкой с датой обновления, репликация будет много проще в настройках и сопровождении.
16 авг 13, 05:06    [14716230]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
я пока не хочу покупать полноценную версию. лишних денег нет. а пиратские мне не очень хочется ставить
16 авг 13, 05:07    [14716231]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
А как Вы планируете синхронизовать таблицы по расписанию тогда в Express версии нет поддержки заданий по расписанию? Добавлять задание в Windows? А отслеживать ошибки как? Если пойдёте всё таки путём SSIS, есть хороший пример [url=]http://blogs.msdn.com/b/jorgepc/archive/2010/12/07/synchronize-two-tables-using-sql-server-integration-services-ssis-part-i-of-ii.aspx[/url]
16 авг 13, 05:12    [14716232]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
есть джобы виндовые которые могут запускать вбс скрипты. уже все написано и работает
16 авг 13, 05:15    [14716233]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
а за ссылку спасибо почитаю. вроде то что нужно.
16 авг 13, 05:17    [14716234]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
Гость333
Member

Откуда:
Сообщений: 3683
saycale
Если пойдёте всё таки путём SSIS

Только есть одна проблема — SQL Server Express не позволяет разрабатывать и запускать SSIS-пакеты, для этого нужен как минимум Standard Edition.
16 авг 13, 09:28    [14716629]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
saycale
Member

Откуда: Москва->Сидней
Сообщений: 32
А что насчёт внешней утилиты dtexec? [url=]http://technet.microsoft.com/en-us/library/hh231187.aspx[/url]
16 авг 13, 11:40    [14717542]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
Гость333
Member

Откуда:
Сообщений: 3683
saycale,

Не знаю, сам не использовал такую связку. Вот тут пишут, что есть свои ограничения:
http://stackoverflow.com/questions/292564/can-i-run-ssis-packages-with-sql-server-express-or-web-or-workgroup-editions
OK, here's the story. You can install DTEXEC using SQL Server 2005 Express Edition with Advanced Services or the Toolkit as above. However, this version of DTEXEC is not fully functional. If one of your data flow tasks tries to do something that isn't allowed you will get a message like this:

Description: The product level is insufficient for component "<component>" (1828).

This means that the particular component uses something which isn't supported in the installed version of DTEXEC. I have noticed, for example, that this will happen if you use a DataReader source, which it appears I have to do to import from ODBC.

Правда, это относится к версии 2005, но не думаю, что в 2012 что-то изменилось.
16 авг 13, 12:00    [14717700]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
еще нашел у майкрософт такую технологию Sync Framework. может кто пользовался уже?
16 авг 13, 15:02    [14718978]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
Glory
Member

Откуда:
Сообщений: 104751
maximIZ
на двух серверах стоит sql server 2012 express. версии идентичные

И можно узнать их точные версии ?
TDS - это протокол нижнего уровня.
Настроек сервера влияющих на этот протокол очень мало. Например Network package size.
Сеть надо проверять на потери пакетов между серверами или задержку в их доставке
16 авг 13, 16:52    [14719784]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
Pich
Member

Откуда: Minsk
Сообщений: 173
maximIZ
еще нашел у майкрософт такую технологию Sync Framework. может кто пользовался уже?


SyncToy 2.1 (для файлов и директорий) используем постоянно для синхронизации и для эхо. Классная штука.
(What Does SyncToy Do?
SyncToy synchronizes the files in folders of your choosing. It does so by copying, renaming, and deleting files. )
Для баз данных должно быть не хуже. Надо попробовать!
16 авг 13, 17:28    [14719987]     Ответить | Цитировать Сообщить модератору
 Re: связанный сервер  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 640
Glory
maximIZ

И можно узнать их точные версии ?


удаленный вдс сервер
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

сервер на который происходит загрузка
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
16 авг 13, 18:33    [14720296]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить