2013-03-29 8 views
5

Ho il seguente codice:Errore durante il tentativo di eseguire SQL dall'interno di SQL CLR

[SqlFunction(DataAccess = DataAccessKind.Read, SystemDataAccess = SystemDataAccessKind.Read)] 
    public static int GetInt() 
    { 
     int retValue = 0; 
     using (SqlConnection conn = new SqlConnection("context connection = true")) 
     { 
      conn.Open(); 
      SqlCommand cmd = conn.CreateCommand(); 
      cmd.CommandText = "select MyInt from SomeTable"; 
      object timeOut = cmd.ExecuteReader(); // <- error happen here 

     } 
     return retValue; 

    } 

ottengo la seguente eccezione in

cmd.ExecuteReader(); 

{ "Questa dichiarazione ha cercato di accedere ai dati di cui l'accesso è limitato dall'assemblea. "}

+0

questo non è più un problema, l'ho risolto! – Pacman

risposta

6

Ho avuto bisogno di aggiungere DataAccess = DataAccess.Read t o l'attributo della funzione per farlo.

6

Come nota a margine, se si sta tentando di accedere a tabelle temporanee create con #, ad esempio #tmp, è necessario inserire anche SystemDataAccess = SystemDataAccess.Read. Un altro modo per aggirare questo sarebbe usare un'espressione di tabella comune per ottenere i tuoi dati.