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
Isql
lunedì 27 agosto 2007 - 18.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
m3l0g
Profilo
| Newbie
6
messaggi | Data Invio:
lun 27 ago 2007 - 18:18
Ciao a tutti,
utilizzo SQL Server 2005 Express e per un progetto che sto sviluppando, pensavo di usare isql per eliminare delle righe in base alla data, ma purtroppo, non riesco a trovare isql, c'è la possibilità di scaricarlo, se si dove lo trovo?
Eventualmente pensavo di fare un programmino C# che mi facesse la stessa cosa, ma non so come fare per dirgli di eseguirsi ogni x minuti.
Grazie
http://marlonbando.blogspot.com
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 18:25
In SqlServer 2005 (e Express) OSQL e ISQL non esistono più. Al loro posto esiste SQLCMD.
Ti rimando a questo link per maggiori dettagli
http://database.html.it/articoli/leggi/1760/sql-server-in-una-riga-di-comando/
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
m3l0g
Profilo
| Newbie
6
messaggi | Data Invio:
lun 27 ago 2007 - 18:47
Grazie,
solo che se scrivo così:
SQLCMD -S .\SQLEXPRESS -q"DELETE FROM [UserDB].[dbo].[Accessi] WHERE DATEDIFF((mi, OrderDate, GETDATE())+15))"
mi da il seguente errore:
Msg 4145, Level 15, state 1, Server G0L3M\SQLEXPRESS, Line 1, An expression of non-boolean type specified in a context where a condition is expected, near ')'.
Sai mica da cosa può essere dato?
Grazie
Stefano
http://marlonbando.blogspot.com
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 18:59
>Grazie,
di nulla
>solo che se scrivo così:
>SQLCMD -S .\SQLEXPRESS -q"DELETE FROM [UserDB].[dbo].[Accessi] WHERE DATEDIFF((mi, OrderDate, GETDATE())+15))"
>mi da il seguente errore:
>Msg 4145, Level 15, state 1, Server G0L3M\SQLEXPRESS, Line 1, An expression of non-boolean type specified in a context where a >condition is expected, near ')'.
>Sai mica da cosa può essere dato?
la clausola Where è errata, deve restituire un valore boolean... dovri aggiungere a DATEDIFF((mi, OrderDate, GETDATE())+15)) una condizione.
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 19:02
>Grazie,
di nulla
>solo che se scrivo così:
>SQLCMD -S .\SQLEXPRESS -q"DELETE FROM [UserDB].[dbo].[Accessi] WHERE DATEDIFF((mi, OrderDate, GETDATE())+15))"
>mi da il seguente errore:
>Msg 4145, Level 15, state 1, Server G0L3M\SQLEXPRESS, Line 1, An expression of non-boolean type specified in a context where a >condition is expected, near ')'.
>Sai mica da cosa può essere dato?
la clausola Where è errata, deve restituire un valore boolean... dovri aggiungere a DATEDIFF((mi, OrderDate, GETDATE())+15)) una condizione.
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
m3l0g
Profilo
| Newbie
6
messaggi | Data Invio:
lun 27 ago 2007 - 19:03
Scusa, ma è da poco che ho iniziato ad usarlo, ma ci devo aggiungere un if ho basta un != ?
Grazie
http://marlonbando.blogspot.com
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 19:17
La clausola WHERE deve essere una condizione.
La funzione che tu hai specificato (DATEDIFF((mi, OrderDate, GETDATE())+15))) restituisce un valore ma non è una condizione. Una condizione deve restituire un valore True o False.
Questo significa che la tua WHERE dovrebbe essere "DATEDIFF((mi, OrderDate, GETDATE())+15)) = QUALCOSA" oppure al posto di = inserisci un operatore logico quale '<', '>','<>', ecc.
Chiaramente dove ho scritto QUALCOSA devi inserire il valore da confrontare con il risultato della funzione.
Spero di essermi spiegato, rimango comunque a disposizione
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 27 ago 2007 - 19:35
>In SqlServer 2005 (e Express) OSQL e ISQL non esistono più.
>Al loro posto esiste SQLCMD.
osql.exe c'è ancora anche se non supporta le novità introdotte con SQL Server 2005
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 19:40
Hai ragione, scusa l'errore!
Ciao
Ale
http://blogs.dotnethell.it/alebadalin
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 27 ago 2007 - 20:22
>solo che se scrivo così:
>
>SQLCMD -S .\SQLEXPRESS -q"DELETE FROM [UserDB].[dbo].[Accessi]
>WHERE DATEDIFF((mi, OrderDate, GETDATE())+15))"
>
> mi da il seguente errore:
Ciao Stefano,
se ci posti la struttura della tabella Accessi (CREATE TABLE), alcune righe di prova (INSERT INTO) ed il risultato che vorresti ottenere dalla query, sono sicuro che troveremo insieme la soluzione.
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
m3l0g
Profilo
| Newbie
6
messaggi | Data Invio:
lun 27 ago 2007 - 21:13
Le tabelle le ho create con SQL Server Management Studio Express, la tabella in questione è così strutturata:
user = Utente
AccesN = Numero di accessi dell'utente
Data = Data di accesso
Io vole semplicemente cancellare un intera riga se la data è maggiore rispetto a quella attuale di15 minuti.
Spero di essermi spiegato.
Grazie
http://marlonbando.blogspot.com
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 21:26
Forsi intendi eliminare i record con Data memorizzata passata da più di 15 minuti. In tal caso:
SQLCMD -S .\SQLEXPRESS -q"DELETE FROM [UserDB].[dbo].[Accessi] WHERE DATEDIFF((mi, OrderDate, GETDATE())))>15
Così dovrebbe funzionare
Ciao
Alessandro
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 27 ago 2007 - 21:59
>Le tabelle le ho create con SQL Server Management Studio Express,
>la tabella in questione è così strutturata:
>
>user = Utente
>AccesN = Numero di accessi dell'utente
>Data = Data di accesso
>
>Io vole semplicemente cancellare un intera riga se la data è
>maggiore rispetto a quella attuale di15 minuti.
>
>Spero di essermi spiegato.
Come fa la data memorizzata ad essere maggiore di 15 minuti rispetto a quella attuale?
La data di accesso avviene nel futuro?
E' proprio per questo motivo che ti ho chiesto di postare la struttura della tabella e delle righe di prova!
Ci vogliono 2 minuti a preparare un esempio, e 1 minuto a fornire la risposta se si hanno delle basi precise su cui ragionare, diversamente come vedi il discorso si protrae all'infinito senza raggiungere il risultato sperato
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
SSUPERPIPPO
Profilo
| Guru
1.095
messaggi | Data Invio:
lun 27 ago 2007 - 22:19
Forsi intendi eliminare i record con Data memorizzata passata da più di 15 minuti. In tal caso:
SQLCMD -S .\SQLEXPRESS -q"DELETE FROM [UserDB].[dbo].[Accessi] WHERE DATEDIFF((mi, OrderDate, GETDATE())))>15
Così dovrebbe funzionare
Ciao
Alessandro
http://blogs.dotnethell.it/alebadalin
m3l0g
Profilo
| Newbie
6
messaggi | Data Invio:
lun 27 ago 2007 - 23:16
>Come fa la data memorizzata ad essere maggiore di 15 minuti rispetto
>a quella attuale?
>La data di accesso avviene nel futuro?
Semplicemente perché il mio web services che registra nel DB la data di accesso, successivamente questa procedura controlla la data nel DB (precedente) con la data attuale, quindi nessun viaggio nel futuro.
>E' proprio per questo motivo che ti ho chiesto di postare la
>struttura della tabella e delle righe di prova!
>Ci vogliono 2 minuti a preparare un esempio, e 1 minuto a fornire
>la risposta se si hanno delle basi precise su cui ragionare,
>diversamente come vedi il discorso si protrae all'infinito senza
>raggiungere il risultato sperato
Ma a me sembra che la risposta di Alessandro sia perfetta, l'ho già provata e funziona.
Grazie
http://marlonbando.blogspot.com
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 !