Devo usare una DLL di terze parti in un codice c # di trigger in CLR di SQL Server
Ma quando provo ad aggiungere un riferimento, mostra solo alcune DLL di SQL Server.
Come posso aggiungere la mia dll di terze parti a SQL Server?
Devo usare una DLL di terze parti in un codice c # di trigger in CLR di SQL Server
Ma quando provo ad aggiungere un riferimento, mostra solo alcune DLL di SQL Server.
Come posso aggiungere la mia dll di terze parti a SQL Server?
Risposte:
È possibile solo aggiungere riferimenti a quegli assembly che sono stati registrati con SQL Server. Se non sono registrati, non verranno visualizzati nella finestra di dialogo Aggiungi riferimenti.
Esistono diversi passaggi necessari per registrare una DLL, in primo luogo è necessario riconfigurare il database:
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;
Fatto ciò, Sql Server è abilitato per CLR. Successivamente, dovrai registrare il tuo assembly:
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
Se quest'ultimo script viene eseguito correttamente, l'assembly è ora registrato e verrà visualizzato nella finestra di dialogo Aggiungi riferimenti.
Ciò che dovrete considerare, tuttavia, è la sicurezza dell'applicazione della configurazione CLR del vostro Sql Server:
SAFE
, solo in circostanze eccezionali dovresti usare EXTERNAL_ACCESS
o UNSAFE
.Assembly.Load()
è intenzionalmente limitato.UNSAFE
.context connection = true;
) viene eseguito nel contesto dell'utente connesso, quindi è necessario assicurarsi di essere a conoscenza dell'accesso che tale libreria ha ai propri dati.Suppongo che stai chiedendo alternative all'installazione di assembly CLR SQL da Visual Studio.
Non è necessario disporre del codice in Visual Studio.
La distribuzione di Oggetti database CLR su MSDN descrive in dettaglio le opzioni, tra cui istruzioni SQL e script di distribuzione.
Uso una DLL di terze parti molto grande che prende una pagina Web e la converte in un PDF.
Il PDF viene salvato su una condivisione file e il database viene aggiornato per posizione e tipo.
Questo è un processo in 3 passaggi:
Crea un'app console che utilizza la DLL di terze parti per creare il PDF e accetta l'URL e FilePath come parametri e restituisce le dimensioni del PDF e il numero di pagine.
Creare una procedura memorizzata CLR che quindi chiama l'app console sul server
Ho inserito tutto in un'unica procedura memorizzata che chiama l'app CLR per creare il PDF e quindi scrivo i metadati su di esso nel database.
Mi rendo conto che non è perfetto e non dovresti assolutamente fare qualcosa di così folle in un grilletto!
Lo menziono solo qui per gli altri con domande sull'uso di DLL di terze parti nel loro CLR.
La mia speranza è che ruotando una console cmd.exe per eseguire la DLL di terze parti, invece di eseguire tutto in-proc, se si blocca, non influirà negativamente su SQL Server. Questo è quello che spero.
Si prega di commentare se questo è un approccio davvero negativo e perché.