Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Server 2012 +CLR +WCF  [new]
PetSerVas
Member

Откуда: Лида, Беларусь
Сообщений: 27
При создании в базе данных Assemby MS SQL 2012 ругается:
Не удалось выполнить для сборки "CLRWS" из-за ошибки проверки сборки "System.IdentityModel". Убедитесь, что соответствующие сборки обновлены и являются доверенными (для external_access или unsafe) для запуска в базе данных

Кто-нибудь знает как победить?
17 июл 12, 10:58    [12876383]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Понять как работает подключение модулей в MSSQL.
17 июл 12, 11:52    [12876765]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
PetSerVas
Member

Откуда: Лида, Беларусь
Сообщений: 27
Возможно Вы правы и я не все понимаю, а может быть здесь кроется проблема в MS SQL 2012:
Sql Server 2012 Error when creating assembly from System.IdentityModel.dll
17 июл 12, 15:48    [12878525]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
А Вы её с UNSAFE регистрируете?
17 июл 12, 16:22    [12878836]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
PetSerVas, селяви.

Какой гемор себе сделали мелкомягкие. Мне это нраица. Императивщина мастдай.
17 июл 12, 16:59    [12879201]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
PetSerVas
Member

Откуда: Лида, Беларусь
Сообщений: 27
Jovanny
А Вы её с UNSAFE регистрируете?

Конечно
17 июл 12, 17:14    [12879314]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
И указывали путь типа "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.IdentityModel.dll" ?
17 июл 12, 18:09    [12879698]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Jovanny, вы пойдите по ссылке и наткнётесь на это.
Чё тут мусолить?
17 июл 12, 19:51    [12880183]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
PetSerVas,

Сам недавно писал SQLCLR библиотеку с использованием вызова WCF. В итоге пришлось много чего регить
CREATE ASSEMBLY 
SMDiagnostics from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows 
    Communication Foundation\SMDiagnostics.dll'
with permission_set = UNSAFE

GO
 
CREATE ASSEMBLY 
[System.Web] from
'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.dll'
with permission_set = UNSAFE

GO

CREATE ASSEMBLY 
[System.Messaging] from
'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll'
with permission_set = UNSAFE
 
GO

CREATE ASSEMBLY  
[System.IdentityModel] from
'C:\Program Files\Reference Assemblies\Microsoft\
 Framework\v3.0\System.IdentityModel.dll'
with permission_set = UNSAFE

GO

CREATE ASSEMBLY  
[System.IdentityModel.Selectors] from
'C:\Program Files\Reference Assemblies\Microsoft\
 Framework\v3.0\System.IdentityModel.Selectors.dll'
with permission_set = UNSAFE

GO

CREATE ASSEMBLY -- this will add service modal

[Microsoft.Transactions.Bridge] from
'C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication 
 Foundation\Microsoft.Transactions.Bridge.dll'
with permission_set = UNSAFE

GO

-- Тут регим свой DLL

Взято отсюда
Ну это еще пол беды. Дело в том что для процедуры необходим конф-файл с параметрами Service, Contract, End-Point. И просто так его не включишь и не положешь рядышком. Единственно правильным решением было создать файл sqlservr.exe.config и положить его в каталог Binn рядом исполняемымфайлом SQL Server. Потестив библиотеку и взвесив + и - данной реализации. Решил уйти от SQLCLR на Виндовую службу, которая реализовала тот же механизм.
17 июл 12, 22:53    [12880788]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
gds
Потестив библиотеку и взвесив + и - данной реализации. Решил уйти от SQLCLR на Виндовую службу, которая реализовала тот же механизм.
Вот это я понимаю.

Вопрос, как с ней (службой) связь реализована , в двух словах опишите пожайлуста.
18 июл 12, 01:06    [12881177]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Mnior
gds
Потестив библиотеку и взвесив + и - данной реализации. Решил уйти от SQLCLR на Виндовую службу, которая реализовала тот же механизм.
Вот это я понимаю.

Вопрос, как с ней (службой) связь реализована , в двух словах опишите пожайлуста.


У службы есть два потока. Один поток, через определенный интервал времени (который будет для вас оптимален), сканирует служебную таблицу на наличие готовых к выгрузки данных. Если таковые имеются, запускается второй поток который и производит сбор данных из таблиц, обмен через wcf и запись ответа обратно в табилицы.
Существенный минус данной реализации это то, что коннект к БД для мониторинга необходимо держать постоянно открытым. Но это в том случае если у Вас интервалы небольшие (как например у меня каждые 3 сек. с 13:00 до 18:00, в остальное время 1 раз в 15 мин.). Если же они превышают минуту и более, я бы конечно создавал подключение, опрашивал, закрывал его и убивал объект. Но создавать и убивать объект + установка подключения каждые 3 сек. - уж больно расточитально к ресурсом. В данном случае проще держать коннект постоянно открытым.
Зато куча других плюсов.
18 июл 12, 09:07    [12881587]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
gds,
Понятно.
Есть одно решение - SB c внешней активацией через WMI.
Но мне казалось, что есть ещё более элегантное решение (смотреть в сторону как общаются два SQL сервера при пересылке сообщений SB).
18 июл 12, 10:20    [12881841]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
Mnior
gds,
Понятно.
Есть одно решение - SB c внешней активацией через WMI.
Но мне казалось, что есть ещё более элегантное решение (смотреть в сторону как общаются два SQL сервера при пересылке сообщений SB).

SB оно конечно хорошо, но руки пока не дошли до него, в плане хорошо разобраться. К тому же у нас четкое разграничение БД, бизнес слоя, и клиента. И все это на Веритасе. т.ч. на БД и SQL Server должно быть как можно меньше навешано. СУБД должна быть СУБД и легко мингируема (в плане переезда на др ноду и т.п.). А чем больше прикручиваешь к БД фишек, тем больше шанс того, что на другой ноде что-то не заработает. Но все надо тестить и проверять.
18 июл 12, 10:35    [12881943]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Согласен.

Особенно, если у вас SQL аутентификация, для доступа к серверу из приложения (иначе разницы мало).
SB никак о существовании приложения же не подозревает. Это приложение подписывается на уведомления сервера (через WMI).
А с другой стороны вы вроде прыгали от CLR, а это уже наличие SB изначально, а ещё если вы пользуетесь TSQL синтаксисом 2005, то ...
Так что по разграничению разницы мало.
18 июл 12, 12:09    [12882635]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Mnior
Jovanny, вы пойдите по ссылке и наткнётесь на это.
Чё тут мусолить?


Таки да. У меня тоже база использует WCF сервисы, хорошо, что не перешёл на SQL Server 2012.
gds правильное решение подсказал - попытаться использовать версии для .Net Framework 2 и 3.
19 июл 12, 09:34    [12886675]     Ответить | Цитировать Сообщить модератору
 Re: Server 2012 +CLR +WCF  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Пришлось поступиться принципами и перейти на SQL Server 2012.
Столкнулся с такой же проблемой.

Msg 6544, Level 16, State 1, Line 6
CREATE ASSEMBLY for assembly 'System.ServiceModel' failed because assembly 'microsoft.visualbasic.activities.compiler' is malformed or not a pure .NET assembly.
Unverifiable PE Header/native stub.

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

ОС - Windows Server 2012 DataCenter.

Решения пока что не нашёл.
Разве что выносить все модули с запросами к WCF-сервису за пределы SQL Server'а.

Может, кто уже решил проблему?
1 апр 13, 18:45    [14123353]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить