четверг, 26 июля 2012 г.

MS SQL Server CLR и разрешения System.WEB

Продолжая предыдущий пост... Есть желание отправлять web запрос из хранимой процедуры. Естественно привязал сборку, примерно, с содержанием такого кода:
        [Microsoft.SqlServer.Server.SqlProcedure]
        public static SqlInt32 SendMessage(SqlString provider,  SqlString mess)
        {
            try {
           
           
            WebRequest reqGET = WebRequest.Create(mess.ToString());
            WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            sr.ReadToEnd();
          
            return 1;
            }
             catch(Exception ex){
                              }

           
            return 0;
        }

Все компилируется на ура, привязывается, но вот при вызове хранимой процедуры валится ошибка "Сбой при запросе разрешения типа "System.Net.WebPermission..."(Request for the permission of type 'System.Net.WebPermission, System...).
Как лечится:
1. Добавляем атрибут к функции [WebPermission(System.Security.Permissions.SecurityAction.Demand, ConnectPattern = @"*")]
2. Привязываем сборку с разрешением EXTERNAL_ACCESS, как то так:
CREATE ASSEMBLY hwsql
FROM 'C:\massembly\hwsql.dll'
WITH PERMISSION_SET = EXTERNAL_ACCESS
В этом случае может возникнуть косячёк The assembly is authorized when either of the following is true: the database owner (DBO) has EXTERNAL ACCESS ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with EXTERNAL ACCESS ASSEMBLY permission.
Тут возможны варианты, но по простому нужно чтобы хозяин базы на которой создаете ассембли был аналогичен хозяину базы мастер. Ну или дайте хозяину базы на которой создаёте EXTERNAL ACCESS ASSEMBLY

использовано: это

вторник, 24 июля 2012 г.

.NET assembly in MS SQL server. Привязка сборки .Net к MS SQL.

Возникла задача привязать сборку .net к sql серверу. Как оказалось все просто.
1. Не стоит пытаться привязать к SQL 2005, 2008 сборку .NET 4.0 вот тут про это писано. Ждем SQL 2012.
2. Как посмотреть какая версия CLR сейчас доступна:
select * from sys.dm_clr_properties
у меня результат был такой:
directory    C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
version    v2.0.50727
state    CLR is initialized
Не долго думая я забахал проект ClassLibrary именно во 2 фреймворке.
Что-то типа того:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Server;

namespace hwsql
{
    public class msql
    {
        public msql()
        {
        }
           
        [SqlProcedure]
        public static void HelloWorld(string inputString,out string outString) 
        {
               outString=inputString+"!!!";
        }
       
    }
}
Дальше нужно было заругить полученную dll. Все сделал как тут и тут написано.
Т.е. включил clr интеграцию или вернее разрешил и задал опицию базы trustworthy.

EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO

ALTER DATABASE BANKDBTEST SET TRUSTWORTHY ON

Теперь можно регистрировать ассембли(сборку). Все тоже как бы элементарно:

CREATE ASSEMBLY hwsql
FROM 'C:\massembly\hwsql.dll'
WITH PERMISSION_SET = SAFE

понятно, что путь должен быть на серваке. Кстати все это можно делать через графический интерфейс Microsoft SQL Management Studio. На базе в Programmability-Assemblyes.

Теперь самое интересное - создаем хранимую процедуру.
CREATE PROCEDURE mNetAssemblyHello
(
@in nvarchar(200),
@out nvarchar(MAX) OUTPUT
)
AS EXTERNAL NAME hwsql.[hwsql.msql].HelloWorld


Вот тут есть интересная штука имя неймспейса и класса рекомендуется задавать после имени зарегистрированного на сервере ассембли, т.е. я назвал ассембли hwsql и намеспейс у меня так же зовется получим конструкцию hwsql.[hwsql.msql].HelloWorl тут так написано

Еще статьи на эту тему:
тут и тут, вот тут интересно, еще. Ну а это обязательно читать. Introduction to SQL Server CLR Integration

 

 

воскресенье, 22 июля 2012 г.

Рядом с Друскининкаем. Пирамида Повеласа.

Друскининкай, покатались на лыжах, помочили ноги в аквапарке, что еще делать? Ехать по окрестностям. Например, на пирамиду в Меркине.
Интересное место, да еще и лечебно-целебное. Естественно у этого места есть своя история. Пересказывать ее смысла нет, нужно просто поехать и посмотреть, почитать на стенде, можно поговорить с местными. Из Друскининкая ехать очень просто по трассе A4, главное не пропустить поворот, в лес, дальше по лесу и выезжаете прямо к пирамиде. Лично мое ощущение после посещения - как то сил однозначно добавилось, и малому тоже. Как заводные еще на лыжи в кафе в музей ... чуть спать легли. Буду в тех краях еще раз заеду. Самое главное чуть не забыл - все бесплатно. Естественно все оставляют денежек по желанию. Карта там внизу.

Что-то на литовском.




Тут ссылки и все такое.

Мануал. Рекомендую почитать.


Просмотреть увеличенную карту

пятница, 20 июля 2012 г.

Как добавить место для фоток в google?

Для Ваших фоток места гугл(google albums, picassa) дает не много всего 1GB, для почты аж 10Gb. Но если есть баблосы не проблема, можно прикупить. Войдите в гугл и вперед по ссылке  https://www.google.com/settings/storage/

воскресенье, 8 июля 2012 г.

Усадьба Акарына

Усадьба "Акарына".

Расположение - деревня(агрогородок) Новосёлки, Витебская область, Поставский район.
На карте примерно тут http://goo.gl/maps/05eb
Хозяин народный мастер Сергей Владимирович Щерба (колоритный дядька с косичкой в бороде) и его жена.
Ехали туда через Париж - такая деревушка недалеко от Глубокого, собственно туда тоже заехали.
Мосар
Ну и Мосар не объехали стороной, посмотрели костел.
Общее впечатление от усадьбы, ну так - отдохнули и хорошо. Все было очень хорошо, но расположение на мой вкус, отвратное - в самом центре агрогородка. Хотя задворки выходят прямо к воде - озеру-запруде местной мелкой речки. В усадьбе куча всякой живности - два-три котэ, свинки, козачки, курочки, гав-гав... Свинки, козачки живут на отдельном хоздворе, короче на соседнем участке. На территории два жилых дома. Старый в котором живут хозяева и кухня и новый - гостевой. "Оборудование" в доме на троечку, как говорится, "собирались выкинуть, но завезли на дачу", ну не все конечно, но такое вот у меня впечатление.
"На дворе" есть вместительная беседка, прикольный мобильный стол с колесами от телеги, туалет в викингивомо стиле (очень мне понравился, только туда и ходил, в доме в туалете нет крючка).Баня - по чёрному, со слов СВ, ее приперли в первозданном виде откуда-то. Еще есть улей прикольно стилизованный. Из утвари прикольной тоже есть на что посмотреть.Очень понравился совковый 30 литровый самовар на дровах - вещь в таком хозяйстве незаменимая. Про гончарную мастерскую говорить нечего можно два дня рассматривать, что там и как.
Чё делать?
1.Заниматься гончарством - это достаточно увлекательно, да и результат занятий останется с вами.
2.Кушать шикарную и в то же время простую еду приготовленную хозяйкой.Даже не думайте готовить, что-то сами. Хозяйка готовит супер. Хотя, если вы хотите "сбросить" не просите ее готовить. Вкусного можно много съесть.
3.Ловить карасиков в озере, запускать их в ведро, звать котэ и смотреть на охоту котэ на рыбу.


4.Парится в бане, ну кто как умеет.Но баня действительно по черному, ни где я такой натуральной по черному не видел.
5.Пить самогон, не знаю где его взяла хозяйка, но очень хорош!
6.Ехать в соседнюю деревню к коллеге СВ кататься на лошадке. Пока одни катаются другие развлекаются.Развлечение спортивные - стрельба из воздушки, метание копья, смотрение свиней ... Все это потому, что коллега, как и СВ бывшие школьные учителя подавшиеся на вольные хлеба. О..осторожно там в кустах лежит тихо здоровенный кавказец, одного нашего цапнул за руку, просто так, нефиг мимо ходить.
7.Шарахнуться по окресностям - посмотреть царквы, костёлы и прочие достопримечательности.
В целом вывод - если ехать для не сильно активного отдыха - просто супер. Посидеть за столом, погончарить, порыбачить без притязаний на чудо улов - то что нужно. Если жаждить экшн, то это конечно не сюда. Еще малой мой очень балдел от всего этого - животинки, гончарщины и всякой утвари, так что думаю с детьми тоже будет интересно.
Фотки "до кучи" можно посмотреть тут

P.S.
А что такое "Акарына" я так и не знаю, стыдно.