powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / CLR-код на SQL Express
9 сообщений из 9, страница 1 из 1
CLR-код на SQL Express
    #33970340
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Вот начал писать функции на CLR.
Не пойму, что писать в строке подключения. В Solution на C# несколько проектов, один из них DatabaseCore содержит в себе типизированный датасет и хранит в своих настройках ConnectionString. Правильно ли будет, если я в SqlServerProject создам ссылку на DatabaseCore?
Есть еще Context Connection = true , но он чего-то не работает у меня. Наверно, это связано с тем, что версия экспрессовская.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    public static SqlInt32 clr_MyFunc()
    {
        using (SqlConnection conn = new SqlConnection("Context Connection = true"))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("SELECT parameter FROM my_table WHERE iid = 4", conn);
            return (SqlInt32)cmd.ExecuteScalar();

        }
        
    }

В Management Studio на выходе после
SELECT [dbo].[clr_MyFunc] ()

Msg 0, Level 11, State 0, Line 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
Msg 0, Level 20, State 0, Line 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.

Вместо "Context Connection = true" я еще прописывал строку подключения напрямую - та же ерунда.

А из студийного ServerExplorer вообще ничего не выполняется:
Execution of user code in the .NET Framework is disabled. Enable "clr enabled" configuration option.
Хотя CLR ENABLED включен.
Хотя у меня еще один сервер стоит - Developer Edition. Это как-то влияет?
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34092271
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток. Это опять я.

Пишу хранимку на CLR. Вроде разобрался что, куда и зачем...


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static void sp_MyProc(int FunctionID, int Identifier)
    {
        using (SqlConnection conn = new SqlConnection("context connection = true"))
        {
            conn.Open();
            string s = "";
            // Выбираем одну из table-valued функций с одинаковым входным параметром @IID int
            switch (FunctionID)
            {
                case 1:
                    s = "dbo.Func1";
                    break;

                case 2:
                    s = "dbo.Func2";
                    break;

                case 3:
                    s = "dbo.Func3";
                    break;

                default:
                    s = "dbo.Func4";
                    break;
            }

            SqlCommand cmd = new SqlCommand(s, conn);
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = String.Format("SELECT IID FROM {0}(@IID)", s);

            SqlParameter param = new SqlParameter("@IID", SqlDbType.Int, 4, ParameterDirection.Input, 10, 0, null, DataRowVersion.Current, false, Identifier, "", "", "");
            cmd.Parameters.Add(param);
            SqlDataReader rdr = cmd.ExecuteReader();

            // Пересылаем данные клиенту
            SqlContext.Pipe.Send(rdr);

            conn.Close();
        }
    }
};

Но проблема решилась только частично!!!
Напомню, у меня две версии сервера: одна Express, вторая - Developer

Если запускать эту (да и любую другую) CLR-процедуру из Management Studio, она выполнится прекрасно, вне зависимости от того, к какой версии сервера "приаттачен" MDF-ник.

А вот со студийным ServerExplorer все плохо :(
Хранимка выполняется только при подключении к DeveloperEdition.
Мое приложение использует строку подключения к SQLEXPRESS и при попытке выполнить хранимку из-под него выпадает старое "доброе"
SqlClient.SqlException с сообщением Execution of user code in the .NET Framework is disabled. Enable "clr enabled" configuration option.


Вот чего я понять не могу, так это чем подключение Management Studio в принципе отличается от подключения моего приложения (к SQLEXPRESS).

Гуру сиквела, где Вы?
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34092356
zz118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а точно:
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
?
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34092388
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz118а точно:
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
?

1. Открыл Management Studio и подключился к SQLEXPRESS
2. Приаттачил свой MDF
3.
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO

4.
Код: plaintext
Configuration option 'clr enabled' changed from 1 to 1. Run the RECONFIGURE statement to install.

Да. И еще...
Если строку подключения в клиентском приложении переписать под DeveloperEdition, то все крутится как надо и никаких исключений нету.

Ищу, что-нибудь похожее на clr enabled в app.config . Пока что безрезультатно.
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34093245
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... я уже начинаю подозревать, что это очередной глюк Микрософта :(
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34103291
zz118
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу имей ввиду :
ля!
ничерта они это не исправили!
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34103851
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но сервис паки, я все равно скачиваю... там поглядим.
Спасибо
...
Рейтинг: 0 / 0
CLR-код на SQL Express
    #34179704
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и решение проблемы :)
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=586477&SiteID=1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
CLR-код на SQL Express
    #35889464
Daff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня как я понимаю такая же проблема.
С самого начала использования sql использовал
clr код для написания хранимых процедур. Никогда проблем с ним не было, если только не
считать необходимости в начале включить clr компиляцию на сервере. Но в данный момент на
той машине на которой работаю наблюдается такая проблема. Хранимый clr не хочет
компилироваться и бросается соответствующий exception. Функцию clrEnabled естественно
включил. проверка её состояния также показывает что компиляция хранимого clr включена.
В сети ответа найти не смог. Все ведет вот именно на эту статейку. Из неё вроде немного понятно в чём проблема, но как на деле решить проблему я так понять и не смог. Помогите советом кто-нибудь.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / CLR-код на SQL Express
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]