Я получаю следующую ошибку, когда выполняю функцию .Net в SQL 2005, какие-нибудь идеи?
Msg 6522, Level 16, State 2, Line 1 A .NET Framework error occurred during execution of user defined routine or aggregate 'Function1': System.Security.SecurityException: Request for the permission of type 'System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. System.Security.SecurityException:
at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) at System.Security.CodeAccessPermission.Demand() at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) at System.Net.HttpRequestCreator.Create(Uri Uri) at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) at System.Net.WebRequest.Create(Uri requestUri) at System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri) at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri) at System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at SqlServerProject1.navision.NavisionLink.GetPONumber(String Database) at UserDefinedFunctions.Function1()





кажется, у вас недостаточно безопасного доступа?
но было бы проще, если бы вы могли опубликовать код, связанный с этой ошибкой
используя Систему; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; с использованием Microsoft.SqlServer.Server;
общедоступный частичный класс UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction] общедоступная статическая функция SqlString Function1 () { SqlServerProject1.navision.NavisionLink po = новый SqlServerProject1.navision.NavisionLink ();
string test = Convert.ToString(po.GetPONumber("NavisionDev"));
// Put your code here
return new SqlString(test);
}
};
Вам необходимо установить некоторую информацию о безопасности для запуска вашего кода .NET на SQLServer.
Пожалуйста, обратитесь к CodeProject, чтобы найти необходимую информацию.
Вы не создаете сборку с соответствующим набором разрешений. Ваш оператор CREATE ASSEMBLY должен выглядеть примерно так:
CREATE ASSEMBLY ... WITH PERMISSION_SET = EXTERNAL_ACCESS
Этот должен позволяет вам выполнять вызов веб-службы. Если это не сработает, вам придется установить PERMISSION_SET на UNSAFE.
Пожалуйста, добавьте это как правку к вопросу, а не как отдельный ответ.