Отправка SMS с помощью GSM-модема из SQL Server 2008 R2 - PullRequest
2 голосов
/ 25 ноября 2011

Я хочу отправить SMS с помощью AT-команд GSM-модема из SQL Server 2008, поэтому я написал проект базы данных CLR для Visual C # SQL и хранимую процедуру.

Но когда я выполнил эту хранимую процедуру, я получил этоошибка:

Запрос на разрешение типа 'System.Security.Permissions.SecurityPermission, mscorlib, Версия = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089' не выполнен.

Вот исходные коды хранимой процедуры и класса для отправки смс:

[Microsoft.SqlServer.Server.SqlProcedure]
public static void SendSMS2(string phone, string message)
{
    SMSManagement.SM2S ss = new SMSManagement.SM2S();
    ss.SendMessage(phone, message);
}

public void SendMessage(string PhoneNumber, string Message)
{
    try
    {
        SerialPort port = new SerialPort();

        port.PortName = "COM5";                
        port.BaudRate = 115200;                  
        port.DataBits = 8;                
        port.StopBits = StopBits.One;     
        port.Parity = Parity.None;        
        port.ReadTimeout = 300;           
        port.WriteTimeout = 300;          

        // Error occurred in here.
        port.Open();
        port.DtrEnable = true;
        port.RtsEnable = true;

        SMS sms = new SMS();
        sms.Direction = SMSDirection.Submited;
        sms.PhoneNumber = PhoneNumber;
        sms.ValidityPeriod = new TimeSpan(4, 0, 0, 0);
        sms.Message = Message;

        Message = sms.Compose(SMS.SMSEncoding.UCS2);

        ExecCommand(port, "AT", 300, "No phone connected");
        ExecCommand(port, "AT+CMGF=0", 300, "Failed to set pdu format.");
        ExecCommand(port, "AT+CMGS=1", 300, "Failed to set message length.");
        string command = Message + char.ConvertFromUtf32(26);
        ExecCommand(port, command, 6000, "Failed to send message"); 

        port.Close();
    }
    catch (Exception ex)
    {
        SqlContext.Pipe.Send(ex.Message);
    }
}

Версия Visual Studio и SQL Server - 2010 SP1 и 2008 R2.Основой проекта CLR является 2.0.

1 Ответ

1 голос
/ 25 ноября 2011

Вы не упомянули, как вы установили свою сборку в SQL Server. Если вы только что развернули приложение прямо из Visual Studio - какой уровень разрешений вы указали ??

enter image description here

Значением по умолчанию является Safe, что нормально, если вы работаете только в SQL Server - сопоставление регулярных выражений или тому подобное.

Если вы хотите «выйти» из SQL Server и общаться с миром, вам необходимо установить Permission Level в Unsafe перед развертыванием сборки в SQL Server.

...