Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Inviare SMS da SQL Server 2005
mercoledì 23 luglio 2008 - 11.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 11:37
Salve, un mio applicativo asp.net 2.0, si poggia su un db SQL Server 2005.
Ogni notte, una stored procedure invia e.mail a degli utenti in base a dati presenti in una tabella.. tutto OK!
ora mi volevo appoggiare su un servizio SMS. Per inviare un SMS devo chiamare una pagina (
http://invio.serversms.it/sms/send.php
) che ritorna OK o KO.
I dati li ho tutti in SQL Server, cosa mi consigliate? Vorrei come per le e.mail fare una stored procedure che la sera fa l'invio.. ma come faccio da SQL server ?
ho seguito l'articolo di
http://nicholasclarke.co.uk/blog/2008/01/16/web-request-from-sql-server-via-c/
ma non riesco a togliere un ragno da un buco.. quando faccio la distribuzione mi da errore PERMISSION_SET = EXTERNAL_ACCESS, ho settato TRUSTWORTHY come da articolo, ma niente.. questa è l'unica strada? Dove posso avere maggiori info o dritte?
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 lug 2008 - 12:03
>ho seguito l'articolo di
>
http://nicholasclarke.co.uk/blog/2008/01/16/web-request-from-sql-server-via-c/
>ma non riesco a togliere un ragno da un buco..
Carino, questa cosa servirà anche a me quando deciderò di migrare dei DTS su SQL Server 2005 che accedono via HTTP ad alcuni siti
>quando faccio
>la distribuzione mi da errore PERMISSION_SET = EXTERNAL_ACCESS,
Con distribuzione intendi il deploy dell'assembly oppure la creazione della sp?
Puoi postare i comandi precisi ed il messaggio di errore (completo di codice di errore) che ottieni?
>questa è l'unica strada?
Questa è una bella strada, disponibile a partire dalla versione 2005 di SQL Server.
In passato si utilizzavano accrocchi come Extended Stored Procedure, potenzialmente pericolose per la stabilità dell'intera istanza.
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 12:27
Non so quali casini sono rimasti su SQL Server 2005 (sai poi si inizia a fare cose turche).. ma dovrei aver ripulito il tutto..
dal mio client quando faccio distribuzione dell'applicazione mi da il seguente errore (premetto che la connessioni la faccio con un utente creato da me, per capirci non con sa).
EXTERNAL ACCESS ASSEMBLY permission was denied on object 'server', database 'master'. WebRequest
La generazione va bene, senza errori..
Ho fatto sul mio db
ALTER DATABASE myDatabase
SET trustworthy ON
e
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
sul mio server sql
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 lug 2008 - 13:21
>dal mio client quando faccio distribuzione dell'applicazione
Cosa intendi con "distribuzione dell'applicazione"?
Ti riferisci alla registrazione dell'Assembly con il comando CREATE ASSEMBLY?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 14:42
718_Distribuisci.zip
No intendo.. quallo che vedi in figura..
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 lug 2008 - 14:44
>No intendo.. quallo che vedi in figura..
Quale figura?
Ah, vista
Prova ad eseguire il deploy dell'assebly a manina via CREATE ASSEMBLY (tutti i dettagli sui Books Online).
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 14:55
Dunque ho fatto quanto segue.
1) Compilato la dll
2) Copiata la dll sul server sql server 2005
3) Eseguito sul server
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
4) Eseguito sul server
ALTER DATABASE nscScadenzario
SET trustworthy ON
5) Eseguito sul server
CREATE ASSEMBLY nscWebRequest
FROM 'c:\nascomSQLAssembly\WebRequest.dll'
WITH PERMISSION_SET = SAFE;
fin qui tutti messaggi di OK,
poi provo a fare..
SELECT [nscScadenzario].[dbo].[nscWebRequest] ('http://--YourDomain--/runthis.aspx')
ottengo..
Msg 4121, Level 16, State 1, Line 1
Cannot find either column "nscScadenzario" or the user-defined function or aggregate "nscScadenzario.dbo.nscWebRequest", or the name is ambiguous.
l'assembly ci dovrebbe essere (vedi figura)
Ciao
220x220
23Kb
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 lug 2008 - 15:01
>CREATE ASSEMBLY nscWebRequest
>FROM 'c:\nascomSQLAssembly\WebRequest.dll'
>WITH PERMISSION_SET = SAFE;
>
>fin qui tutti messaggi di OK,
NO, quell'assembly accede a risorse esterne, di conseguenza non può avere permission set SAFE!!
Droppa l'assembly e riregistralo con permission set EXTERNAL_ACCESS.
>poi provo a fare..
>SELECT [nscScadenzario].[dbo].[WebRequest] ('http://--YourDomain--/runthis.aspx')
Mi auguro che abbia utilizzato una URL valida...
>ottengo..
>Msg 4121, Level 16, State 1, Line 1
>Cannot find either column "nscScadenzario" or the user-defined
>function or aggregate "nscScadenzario.dbo.WebRequest", or the
>name is ambiguous.
>
>l'assembly ci dovrebbe essere (vedi figura)
Dopo aver registrato l'assembly, devi creare la funzione con il comando CREATE FUNCTION...AS EXTERNAL NAME.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 15:20
OK!
Ora richiamando la funzione:
SELECT [dbo].[nscWebRequest] ('
http://invio.smsmobile.it/sms/send.php'
)
mi ritorna
Response: OK - OK
Anche se dovrebbe ritornare
KO Parametri non corretti
Se provi da web dovrebbe darti la stessa risposta.. hai una qualche idea di perchè mi dice OK?
cmq grazie.. sono felicissimo, sto usando SQL Server 2005 in maniera seria da un po' di tempo.. grazie ai tuoi consigli e qualche web cast (prima era un access con un setup piu' grande eh eh )
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 lug 2008 - 15:22
>Se provi da web dovrebbe darti la stessa risposta.. hai una qualche
>idea di perchè mi dice OK?
No
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 15:24
Grz!
Ciao!
gmt
Profilo
| Junior Member
98
messaggi | Data Invio:
mer 23 lug 2008 - 15:57
per chi ha letto questo (a mio parere) interessantissimo post, allego il codice per creare l'assembly in maniera da avere come risposta il testo HTML dalla pagina.
using System;
using System.Data;
using System.Net;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString WebRequest(string URL)
{
string valret = "";
try
{
// Get HTML data
WebClient client = new WebClient();
Stream data = client.OpenRead(URL);
StreamReader reader = new StreamReader(data);
string str = "";
str = reader.ReadLine();
while (str != null)
{
valret += str;
str = reader.ReadLine();
}
data.Close();
return valret;
}
catch (WebException exp)
{
return exp.Message;
}
}
};
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 23 lug 2008 - 16:05
>per chi ha letto questo (a mio parere) interessantissimo post,
>allego il codice per creare l'assembly in maniera da avere come
>risposta il testo HTML dalla pagina.
Bello, grazie.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !