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

Откуда: Moscow city
Сообщений: 616
пишу CLR на Delphi Prism

namespace ClassLibrary_test;

interface
uses
  System,
  System.Data,
  System.Data.SqlClient,
  Microsoft.SqlServer.Server,
  System.Data.SqlTypes,
  System.Runtime.InteropServices;
type
  CLRFunctions2 =  class

  public

    [DllImport('user32.dll', EntryPoint := 'FindWindow')]
    class method FindWindow(lpClasName: System.String; lpWindowName: System.String): System.IntPtr; external;

implementation

end.



далее импортирую свою библиотеку в сервер
CREATE ASSEMBLY MyDelphiPrismAssembly1 
from 'd:\DelphiPrism\Project_01\ClassLibrary_test.dll' 
WITH PERMISSION_SET =  SAFE
GO

но получаю ответ
SQL
ALTER ASSEMBLY failed because type "ClassLibrary_test.CLRFunctions2 " in safe assembly "ClassLibrary_test" has a pinvokeimpl method. P/Invoke is not allowed in safe assemblies.


clr enabled 1

sql
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 3)


как решить проблему импорта dll в сервер? обойти вызов сторонней библиотеки не удается.


в диктанте три-четыре варнинга, но в общем компилируется
29 янв 12, 02:26    [11990671]     Ответить | Цитировать Сообщить модератору
 Re: пишу CLR для SQL и вызываю в ней dll  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
SHKoder,

WITH PERMISSION_SET = UNSAFE?
29 янв 12, 02:53    [11990728]     Ответить | Цитировать Сообщить модератору
 Re: пишу CLR для SQL и вызываю в ней dll  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
locky
WITH PERMISSION_SET = UNSAFE?


sql
CREATE ASSEMBLY for assembly 'ClassLibrary_test' failed because assembly 'ClassLibrary_test' is not authorized for PERMISSION_SET = UNSAFE. The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission.
29 янв 12, 02:55    [11990734]     Ответить | Цитировать Сообщить модератору
 Re: пишу CLR для SQL и вызываю в ней dll  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
может нужны какие-то танцы с бубном?
29 янв 12, 02:56    [11990738]     Ответить | Цитировать Сообщить модератору
 Re: пишу CLR для SQL и вызываю в ней dll  [new]
SHKoder
Member

Откуда: Moscow city
Сообщений: 616
ALTER DATABASE db_name() SET trustworthy ON

не помогает
29 янв 12, 03:03    [11990752]     Ответить | Цитировать Сообщить модератору
 Re: пишу CLR для SQL и вызываю в ней dll  [new]
LeadyGaaga
Member

Откуда:
Сообщений: 37
Ну так доведите до конца установку UNSAFE :
1) Сделать owner текушей базы как у master, обычно это sa.
EXEC sp_changedbowner 'sa'


2) Установить trustworthy
alter database XXX set trustworthy on 
29 янв 12, 03:07    [11990757]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить