2010-08-06 4 views
0

Lorsque j'essaie d'exécuter un clr sproc (Toujours en C# IDE pour cela) j'ai des erreurs de permission. L'erreur est "Demande de l'autorisation de type" System.Data.SqlClient.SqlClientPermission, ... a échoué ", j'ai regardé autour de moi en ligne et il semble revenir aux paramètres IIS (je n'utilise pas IIS ni suis-je en utilisant un site web, donc ces solutions ne s'appliquent pas à moi), maintenant j'ai essayé deux chaînes de connexion séparées pour cela aussi (context connection = true, ainsi que la façon dont je le fais habituellement qui est énorme et qui dit que c'est une confiance connexion et le nom de la base de données), mais les deux retournent les mêmes autorisations ont échoué.Autorisations CLR Sproc

Toute aide serait grandement appréciée

+0

Etes-vous sûr que votre utilisateur SQL Server dispose des autorisations appropriées? Habituellement quand je l'ai eu dans le passé, c'est parce que l'utilisateur (utilisant UName & PWord spécifié) ou mon utilisateur AD n'avait pas été installé sur l'instance SQL Server (ou DB) à laquelle j'essayais d'accéder. – AllenG

+0

Oui parce qu'une autre application effectue des appels vers et depuis la même instance de la base de données (Séparer l'instance VS car le programme est un formulaire conçu et celui en question est une tentative CLR Sproc make) n'a aucun problème – CSharpProgrammer

+0

trouvé un tutoriel différent et tout redid selon le tutoriel (http://www.codeproject.com/KB/cs/CLR_Stored_Procedure.aspx) qui a travaillé cependant le tutoriel de http://msdn.microsoft.com/en-us/ library/5czye81z (VS.80) .aspx ne fonctionnait pas (il donnait la sécurité) donc je ne sais pas ce qui s'est passé. Je voudrais savoir cependant, donc je vais laisser cela ouvert et j'espère que quelqu'un peut l'effacer – CSharpProgrammer

Répondre

1

Est-ce que CLR est activé dans votre instance de serveur SQL?

Vous pouvez l'activer en exécutant l'instruction SQL suivante sur votre serveur SQL:

sp_configure 'clr activé', 1 GO

Une fois que cela est RAN, l'assemblée doit être enregistré à SQL:

CREATE ASSEMBLY ASSEMBLYNAME FROM 'Chemin d'accès complet à l'assemblage' --eg C: \ sproc.dll AVEC PERMISSION_SET = SECURITE GO

Créer la procédure stockée comme celui-ci (si vous avez pas déjà) CREATE PROC clrsp_InsertEmployee (
délimité par des virgules paramètres) --Parameters exemple @city VARCHAR (25), @state VARCHAR (2)
AS EXTERNE NOM AssemblyName.StoredProcedures.Function Go

Laissez-moi savoir si cela aide. Autre que cela, vous devrez peut-être configurer des autorisations sur les tables en fonction de l'utilisateur que vous utilisez pour accéder à SQL.

+0

Eh bien, j'ai fait la première déclaration d'assemblage et il a dit qu'il y avait déjà une procédure stockée était identique à un nom déjà enregistré alors j'ai trouvé que (Mon erreur pour ne pas le voir plus tôt) et quand j'essaye de le courir il me donne encore l'erreur de sécurité. Comme il est déjà en train de montrer, je ne devrais pas avoir besoin de créer, n'est-ce pas? Merci pour votre aide et plus vous pouvez fournir – CSharpProgrammer

0

Parlez avec votre DBA concernant vos utilisateurs des autorisations de base de données. Ce n'est probablement pas un problème dans le code.

+0

C'est une base de données locale sur ma machine. Copié à partir de l'environnement de développement pour les besoins spécifiques du test. J'ai un autre programme qui peut correctement faire des commandes SQL de et vers lui, localement aussi. – CSharpProgrammer

+0

@CSharpProgrammer: Cet autre programme peut-il exécuter avec succès la procédure stockée que vous essayez? –

+0

Non parce que je le fais en tant que Sprl CLR, et pour autant que je sache, je ne peux pas le faire à moins qu'il ne traverse correctement la construction – CSharpProgrammer