2009-01-12 7 views
1

Je reçois l'erreur suivante lorsque j'exécute une fonction .Net dans SQL 2005, des idées?Appel de fonction .Net dans SQL 2005

Msg 6522, niveau 16, état 2, ligne 1 Une erreur .NET Framework se sont produits pendant exécution de routine définie par l'utilisateur ou globale 'Fonction1': System.Security.SecurityException: Demande d'autorisation de type 'System.Net.WebPermission, System, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' Échec. System.Security.SecurityException:
à System.Security.CodeAccessSecurityEngine.Check (objet demande, 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.Proto cols.WebClientProtocol.GetWebRequest (Uri uri) à System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest (Uri uri) à System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest (Uri uri) à système. Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, objet [paramètres]) à SqlServerProject1.navision.NavisionLink.GetPONumber (String Database) à UserDefinedFunctions.Function1()

Répondre

0

il vous semble don Pas assez d'accès à la sécurité?

mais serait plus facile si vous pouvez afficher le code lié à cette erreur

0

using System; en utilisant System.Data; en utilisant System.Data.SqlClient; en utilisant System.Data.SqlTypes; en utilisant Microsoft.SqlServer.Server;

UserDefinedFunctions de classe partielle publique {[Microsoft.SqlServer.Server.SqlFunction] SqlString Fonction1 (statique public) {SqlServerProject1.navision.NavisionLink po = new SqlServerProject1.navision.NavisionLink();

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

};

+0

Veuillez l'ajouter comme une modification à la question, pas comme sa propre réponse. – SqlRyan

0

Vous devez définir des informations de sécurité pour l'exécution du code .NET sur le SQLServer.

Veuillez vous reporter à CodeProject pour trouver les informations dont vous aurez besoin.

2

Vous ne créez pas l'assembly avec le jeu d'autorisations approprié.Votre déclaration CREATE ASSEMBLY devrait ressembler à ceci:

CREATE ASSEMBLY ... WITH PERMISSION_SET = EXTERNAL_ACCESS 

Ce devrait vous permettre de faire l'appel de service Web. Si cela ne fonctionne pas, alors vous devrez régler PERMISSION_SET à UNSAFE.