Exécution CLR SQL Server avec ODBC Connexion
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 :
[
Code:
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();
}
} |
J'ai généré la DLL du projet et je l'ai ajouter sous SQL Server 2008
Code:
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; |
En exécution la procédure Test_CLR je reçois toujours le message d'erreur suivant :
Citation:
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()