Bonjour,
Je viens de créer un CLR avec C# sous VS 2010, ma chaine de connexion doit être créer sous ODBC car il existe certain champ dans la base de données qui sont visible seulement avec ODBC.
Ci-dessous le code de ma CLR :
[J'ai généré la DLL du projet et je l'ai ajouter sous SQL Server 2008
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Microsoft.SqlServer.Server.SqlProcedure] public static void Test_CLR() { using (OdbcConnection conn = new OdbcConnection("DSN=SAGE")) { OdbcCommand InsertCurrencyCommand = new OdbcCommand(); InsertCurrencyCommand.CommandText = "SELECT * into tab2 FROM F_DOCENTETE"; InsertCurrencyCommand.Connection = conn; conn.Open(); InsertCurrencyCommand.ExecuteNonQuery(); conn.Close(); } }
En exécution la procédure Test_CLR je reçois toujours le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE ASSEMBLY DSN_CLR from 'C:\Users\plus\Documents\Visual Studio 2010\Projects\DSN_CLR\DSN_CLR\bin\Debug\DSN_CLR.dll' WITH PERMISSION_SET = EXTERNAL_ACCESS; create PROCEDURE Test_CLR AS EXTERNAL NAME DSN_CLR.[DSN_CLR.Proc_Iheb].Test_CLR;
Msg 6522, Niveau 16, État 1, Procédure Test_CLR, Ligne 0
Une erreur .NET Framework s'est produite au cours de l'exécution de la routine ou de la fonction d'agrégation définie par l'utilisateur "Test_CLR" :
System.Security.SecurityException: Échec de la demande d'autorisation de type 'System.Data.Odbc.OdbcPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
System.Security.SecurityException:
à System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
à System.Security.PermissionSet.Demand()
à System.Data.Common.DbConnectionOptions.DemandPermission()
à System.Data.Odbc.OdbcConnection.PermissionDemand()
à System.Data.Odbc.OdbcConnectionFactory.PermissionDemand(DbConnection outerConnection)
à System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
à System.Data.Odbc.OdbcConnection.Open()
à DSN_CLR.Proc_Iheb.Test_CLR()
Partager