Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / CLR-код на SQL Express / 9 сообщений из 9, страница 1 из 1
07.09.2006, 12:01
    #33970340
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
Здравствуйте. Вот начал писать функции на 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
30.10.2006, 18:39
    #34092271
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
Доброго всем времени суток. Это опять я.

Пишу хранимку на 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
30.10.2006, 19:30
    #34092356
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
а точно:
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
?
...
Рейтинг: 0 / 0
30.10.2006, 19:58
    #34092388
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
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
31.10.2006, 10:44
    #34093245
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
Хм... я уже начинаю подозревать, что это очередной глюк Микрософта :(
...
Рейтинг: 0 / 0
03.11.2006, 11:09
    #34103291
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
Сразу имей ввиду :
ля!
ничерта они это не исправили!
...
Рейтинг: 0 / 0
03.11.2006, 12:59
    #34103851
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
Но сервис паки, я все равно скачиваю... там поглядим.
Спасибо
...
Рейтинг: 0 / 0
06.12.2006, 11:15
    #34179704
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
А вот и решение проблемы :)
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=586477&SiteID=1
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.03.2009, 19:50
    #35889464
Daff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CLR-код на SQL Express
У меня как я понимаю такая же проблема.
С самого начала использования sql использовал
clr код для написания хранимых процедур. Никогда проблем с ним не было, если только не
считать необходимости в начале включить clr компиляцию на сервере. Но в данный момент на
той машине на которой работаю наблюдается такая проблема. Хранимый clr не хочет
компилироваться и бросается соответствующий exception. Функцию clrEnabled естественно
включил. проверка её состояния также показывает что компиляция хранимого clr включена.
В сети ответа найти не смог. Все ведет вот именно на эту статейку. Из неё вроде немного понятно в чём проблема, но как на деле решить проблему я так понять и не смог. Помогите советом кто-нибудь.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / CLR-код на SQL Express / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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