SSDT развертывает проблему CLR: .Net SqlClient: сборка не может быть установлена, поскольку существующая политика не позволит ее использовать

У меня есть БД в SQL 2008 R2, я создал проект базы данных SSDT SQL, импортировав существующую БД. В этой БД есть несколько подпрограмм CLR, которые используют System.Drawing V2.0.

При локальном развертывании проекта я получаю следующую ошибку.

SQL72014: Поставщик данных .Net SqlClient: Msg 6586, уровень 16, состояние 1, строка 1 Сборка «SystemDrawing» не может быть установлена, поскольку существующая политика будет препятствовать его использованию.

Я не уверен, какую политику искать.


person Mr McGoo    schedule 02.10.2012    source источник
comment
Зачем вам нужно использовать System.Drawing в базе данных?   -  person brian    schedule 03.10.2012
comment
Есть виджет для извлечения информации из файла png и хранения данных в БД. Это нормально в традиционном VS-проекте, но не в проекте SSDT SQL DB.   -  person Mr McGoo    schedule 04.10.2012
comment
ps: Обычно политика, о которой они говорят, - это жестко запрограммированная эта dll не разрешена на сервере mssql, поэтому проверьте свою версию dll.   -  person Archlight    schedule 25.01.2013


Ответы (1)


Ваш сценарий t-sql должен быть следующим

CREATE DATABASE [test]
GO
ALTER DATABASE [test] SET TRUSTWORTHY ON WITH ROLLBACK IMMEDIATE
GO
USE [test]
GO
ALTER DATABASE [test] SET TRUSTWORTHY ON
GO
exec sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
exec sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
CREATE ASSEMBLY [System.Drawing]
AUTHORIZATION [dbo]
FROM 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Drawing.dll'
WITH PERMISSION_SET = UNSAFE
GO

Но обратите внимание, если вы установили .net 4, вы должны использовать его, и, вероятно, вы используете неправильную dll для сервера sql.

person Archlight    schedule 24.01.2013
comment
Я больше не работаю над этим проектом, но похоже, что мы использовали - person Mr McGoo; 25.01.2013