кто-нибудь, пожалуйста, уточните мне, поддерживает ли CLR Trigger .Net 4.0? - PullRequest
1 голос
/ 17 января 2012

Этот поток является продолжением приведенного ниже потока. Запуск службы Windows, когда новая запись вставляется в БД

Я получил код из Demo.B, предложенный

public partial class Triggers
{
    // Enter existing table or view for the target and uncomment the attribute line
    [Microsoft.SqlServer.Server.SqlTrigger(Name = "Trigger_Web", Target = "StoryItems", Event = "FOR INSERT")]
    public static void Trigger_Web()
    {
        SqlCommand command;
        SqlTriggerContext triggerContext = SqlContext.TriggerContext;
        SqlPipe pipe = SqlContext.Pipe;
        SqlDataReader reader;

        if (triggerContext.TriggerAction == TriggerAction.Insert)
        {
            using (SqlConnection connection = new SqlConnection(@"context connection=true"))
            {
                connection.Open();
                command = new SqlCommand(@"SELECT * FROM StoryItems", connection);
                reader = command.ExecuteReader();
                reader.Read();

                // get inserted value
                string Name;
                string Location;
                Name = (string)reader[1];
                Location =(string)reader[2];
                reader.Close();
                //try
                //{
                //    // try to pass parameter to windows service

                //    //WindowsService param = new WindowService(Name, Location);
                //    //Do something if it pass

                //}
                //catch (Exception ex)
                //{

                //}

                // Replace with your own code
                SqlContext.Pipe.Send("Trigger FIRED");
            }
        }
    }
}

Я сталкиваюсь с несколькими проблемами, когда я запускаю execute, в первую очередь он просит меня изменить версию с 4.0 на более низкую (поэтому в свойствах изменил версию на 3.5).

Когда я пытаюсь войти вон не работает, и все время он говорит, что развертывание успешно, и окно вывода показывает "Отменено пользователем".Не уверен, что происходит за кулисами.

Пожалуйста, кто-нибудь посоветует мне, как я могу выполнить и увидеть некоторые результаты, когда новая строка вставлена.

Ответы [ 2 ]

3 голосов
/ 17 января 2012

Нет, это не так. Поддержка SQLCLR для .Net 4.0 доступна только в SQL Server 2012. Однако ваша Visual Studio знает лучше и скомпилирует и развернет ваши DLL как сборку .Net 2.0.

Кроме этого, выполнение веб-вызовов из триггера - это очень плохая идея . Ваша база данных остановится в ожидании ответов от WWW. Используйте механизм организации очередей и выполняйте вызов WWW из собственного процесса, а не из SQLCLR.

2 голосов
/ 17 января 2012

Нет, Sql Server 2005-2008R2 не поддерживает сборки .NET4

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