Загрузка/выгрузка файлoв в/из BD (+их компрессия)

by Alexey Knyazev 2. марта 2010 11:37

У любого разработчика БД рано или поздно возникает потребность вставить файл(ы) в базу. Преимуществ хранения файлов внутри БД уйма, как и недостатков, но сегодня не об этом, а вообще о том, как возможно загрузить/выгрузить файлы. Наиболее интересный и правильный вариант, на сегодня, работы с файлами - это FileStream (появился в SQL Server 2008).


Хранилище FILESTREAM в SQL Server 2008 позволяет приложениям на основе SQL Server хранить в файловой системе неструктурированные данные, такие как документы и изображения. Приложения могут эффективно использовать многопоточные API-интерфейсы и производительность файловой системы, одновременно обеспечивая согласованность между неструктурированными и соответствующими им структурированными данными.


Но всё же до сих пор многих интересует вариант хранения файлов внутри обычных таблиц в полях BLOB (image/varbinary). Вставку файлов в БД и последующую работу с ними легко организовать с помощью нескольких строк на любом языке программирования, но мы попробуем обойтись средствами SQL Server`а.

[Ещё]

Tags: , , , ,

SQL Server

Читаем почту (IMAP). CLR-сборка.

by Alexey Knyazev 4. февраля 2010 11:22

В одной из предыдущих статей я писал, как читать почту в SQL Server 2005/2008/2008R2 по протоколу POP3 (http://www.t-sql.ru/post/POP3CLR.aspx), там же пообещал, что в ближайшее время покажу, как осуществлять доступ к почте по протоколу IMAP.


Область применения протокола IMAP ( Internet Message Access Protocol ) аналогична области применения протокола POP3: он тоже предназначен для получения почты и используется на участке между MUA получателя и хранилищем сообщений. IMAP предоставляет более широкие возможности работы с почтовыми ящиками, чем POP3: он позволяет работать с несколькими почтовыми ящиками на одном или нескольких серверах IMAP как с файлами и каталогами на собственной машине пользователя. Обычно почтовые ящики сервера IMAP действительно представляют собой файлы в специальном каталоге сервера и его подкаталогах.


Как и в прошлый раз - это будит CLR-сборка (работает достаточно шустро). Но прежде рекомендую ознакомиться с описанием IMAP-протокола.

[Ещё]

Tags: , , , , ,

SQL Server

Скрипт выгрузки данных в Inserts-файл

by Alexey Knyazev 26. января 2010 00:19

В одной из своих заметок в блоге я публиковал, как можно с помощью PowerShell заскриптовать все объекты той или иной БД на сервере баз данных (Скриптуем объекты БД (PoSh) ), а на днях в коментариях в этому скрипту появился вопрос, как заскриптовать сами данные, а не только "скелет" базы.


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

[Ещё]

Tags: , , , ,

PowerShell | SQL Server

Отправка SMS через Web-сервис (CLR)

by Alexey Knyazev 19. января 2010 01:00

Кратко суть задачи: ГАРАНТИРОВАННАЯ отправка СМС-сообщений из уже существующих информационных систем, которые используются у нас на предприятии. Первое, что пришло в голову-это отправка через почту (e-mail to SMS) на ящик вида [номер абонента]@[адрес оператора] большинство сотовых операторов предоставляют подобную услугу (например у МТС: 7913ххххххх@sms.mtslife.ru), хоть и не гарантируют 100% доставку всех сообщений таким образом. После того, как объём сообщений, который стал генерить наш сервер, стал достаточно большим, часть сообщений стали "пропадать" либо приходить с большими задержками. Пришлось искать другое решение.


Идеальный вариант - это работа на прямую c СМС-сервером оператора по протоколу SMPP, но это дополнительная головная боль в виде подписания договора с операторами, которые предоставляют такую возможность для корпоративных клиентов и скорее всего - это дорогая услуга.

[Ещё]

Tags: , , , , ,

SQL Server

Работа с Web-службами через CLR

by Alexey Knyazev 14. января 2010 00:32

Веб-служба, веб-сервис (англ. web service) — программная система, идентифицируемая строкой URI, чьи общедоступные интерфейсы определены на языке XML. Описание этой программной системы может быть найдено другими программными системами, которые могут взаимодействовать с ней согласно этому описанию посредством сообщений, основанных на XML, и передаваемых с помощью интернет-протоколов. Веб-служба является единицей модульности при использовании сервисно-ориентированной архитектуры приложения.


Для демонстрации работы с Web-службами из SQL Server`a, я воспользовался открытым Web-сервисом Центрального банка Российской Федерации, этот сервис привлекателен тем, что информация всегда актуальна, т.к. обновляется с завидной регулярностью и может быть полезна в реальных проектах.


Адрес Веб-сервиса: http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL.

[Ещё]

Tags: , , , , ,

SQL Server

Чтение почты (POP3) в SQL Server 2005/2008

by Admin 17. декабря 2009 00:08

Продолжаю тему безполезных примеров CLR-сборок в помощь администратору(разработчику) БД.


В этот раз решил читать почту в SQL Server 2005/2008/2008R2 через протокол POP3. Многие скажут, что сервер БД не предназначен для этого, но ВДРУГ!?


Конечно для этого у нас есть SQL Mail, но учитывая ряд ограничений, о которых чуть ниже, пришлось посмотреть в сторону собственной сборки. Для чтения почты используются, как правило, протокол POP3 либо IMAP(о нём в следующий раз, возможно так же в качестве очередной CLR-сборки).

[Ещё]

Tags: , , , ,

SQL Server

Снимок УЗ в SQL Server

by Alexey Knyazev 18. октября 2009 21:47

Появилась необходимость делать "снимок" всех логинов на сервере БД со всеми правами внутри сервера и правами на все базы, с возможностью быстро скриптом вернуть это состояние без накатывания БэкАпов.


Для этого случая я навоял небольшой скрипт, думаю он будет многим полезен, так как ещё одно его применение-это перенос УЗ между серверами БД.


За основу взял скрипт от microsoft (http://support.microsoft.com/kb/918992/ru), добавил помимо переноса логинов ещё и перенос серверных ролей+создание юзеров со всеми правами на базы.

[Ещё]

Tags: , , , ,

SQL Server

SQL Server 2008 R2: Unicode Compression

by Admin 18. августа 2009 21:05


Компрессия данных появилась ещё в SQL Server 2008, но в версии SQL Server 2008 R2 её значительно улучшили над Unicode-символами.


Для примера запустим один и тот же скрипт на 2х инстансах 2008 и 2008R2 (эксперементы ставим над системной таблицей dbo.spt_values базы данных master):

[Ещё]

Tags: , ,

SQL Server