Функция CLR вызывает удаленный SQL Server - PullRequest
2 голосов
/ 03 марта 2011

Я совершенно новичок в SQL Server CLR. Я понимаю, что мы должны использовать CLR при условии, что бизнес-логика действительно сложна для реализации в SQL.

У нас довольно много функций в VB.NET для обработки данных, таких как стандартизация данных. Я пытаюсь реализовать их через CLR. Функции обращаются к удаленному серверу сначала для получения справочных данных, а затем обрабатывают на локальном сервере.

Однако, как бы я ни пытался, я получил ошибку

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.

или возвращает ноль с удаленного сервера.

Можем ли мы получить доступ к удаленному серверу в процедуре CLR? Если да, то как?

Ответы [ 2 ]

3 голосов
/ 03 марта 2011

Вы можете получить доступ к удаленным серверам в .Net CLR , но вы действительно не должны .

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

Также см. этот вопрос

1 голос
/ 03 марта 2011

Да, вы можете.Вы можете использовать обычные классы SqlCommand & SqlConnection в .NET Framework для этого. =, Если удаленные серверы являются SQL-серверами, что, как я полагаю, так и есть.

Если это веб-серверы, да, вы можете использовать веб-службы.

На заметку.Будьте очень осторожны с тем, что вы делаете в CLR, потому что, несмотря на то, что CLR выглядит привлекательно, у вас есть только около 512 МБ памяти под SQL 2005, и, добавив некоторые параметры запуска, вы можете выдвинуть ее до 2 ГБ.Просто имейте в виду.

РЕДАКТИРОВАТЬ:

Исходя из ваших комментариев, я предлагаю использовать связанный сервер, а затем заново создать удаленную таблицу локально и затем присоединиться к ней на локальном сервере.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...