Вызов функции .Net в SQL 2005 - PullRequest
1 голос
/ 12 января 2009

При выполнении функции .Net в SQL 2005 я получаю следующую ошибку, есть идеи?

Сообщение 6522, уровень 16, состояние 2, строка 1 A .NET Framework ошибка произошла во время выполнение пользовательской процедуры или агрегат 'Function1': System.Security.SecurityException: Запрос разрешения типа 'System.Net.WebPermission, System, Версия = 2.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089' не удалось. System.Security.SecurityException:
в System.Security.CodeAccessSecurityEngine.Check (Объект спрос, StackCrawlMark & ​​stackMark, Boolean isPermSet) в System.Security.CodeAccessPermission.Demand () в System.Net.HttpWebRequest..ctor (Uri URI, ServicePoint ServicePoint) в System.Net.HttpRequestCreator.Create (Uri Uri) в System.Net.WebRequest.Create (Uri requestUri, Boolean useUriBase) в System.Net.WebRequest.Create (Uri requestUri) в System.Web.Services.Protocols.WebClientProtocol.GetWebRequest (Uri ури) в System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest (Uri ури) в System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest (Uri ури) в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры) в SqlServerProject1.navision.NavisionLink.GetPONumber (String База данных) в UserDefinedFunctions.Function1 ()

Ответы [ 4 ]

2 голосов
/ 12 января 2009

Вы не создаете сборку с соответствующим набором разрешений. Ваше CREATE ASSEMBLY утверждение должно выглядеть примерно так:

CREATE ASSEMBLY ... WITH PERMISSION_SET = EXTERNAL_ACCESS

Это должно позволить вам сделать вызов веб-службы. Если это не сработает, вам придется установить PERMISSION_SET на UNSAFE.

0 голосов
/ 12 января 2009

используя Систему; используя System.Data; using System.Data.SqlClient; использование System.Data.SqlTypes; использование Microsoft.SqlServer.Server;

открытый частичный класс UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction] public static SqlString Function1 () { SqlServerProject1.navision.NavisionLink po = new SqlServerProject1.navision.NavisionLink ();

    string test = Convert.ToString(po.GetPONumber("NavisionDev"));
    // Put your code here
    return new SqlString(test);
}

};

0 голосов
/ 12 января 2009

Вам нужно установить некоторую информацию о безопасности для запуска вашего кода .NET на SQLServer.

Просьба обратиться к CodeProject , чтобы найти необходимую информацию.

0 голосов
/ 12 января 2009

Кажется, у вас недостаточно защищенного доступа?

но было бы проще, если бы вы могли опубликовать код, связанный с этой ошибкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...