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
Creazione di trigger sql server 2005
mercoledì 12 novembre 2008 - 09.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
mer 12 nov 2008 - 09:54
buongiorno a tutti,
avendo la necessità di dover tenere traccia della data di ultimo aggiornamento dei record di una tabella ho creato un semplicissimo trigger:
ALTER TRIGGER [dbo].[lastupdate]
ON [dbo].[CallCenter]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
update dbo.callcenter set dataAggiornamento = getdate() from inserted
where inserted.idChiamata = dbo.callcenter.idChiamata
END
e questo funziona tranquillamente. il problema pero' sorge quando io effetto delle operazioni da (admin passatemi il termine) attraverso il Microsoft SQL Server Management Studio il trigger fa il suo dovere e mi aggiorna il campo. cosa che in questo caso io non vorrei pero'. Mi chiedevo se era possibile intercettare la mia login di accesso al MSSMS e di fare in modo che quando io entro questo trigger non funzioni.
e' possibile una cosa del genere?
grazie mille,
Maurizio
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 12 nov 2008 - 10:03
>il problema pero' sorge quando
>io effetto delle operazioni da (admin passatemi il termine) attraverso
>il Microsoft SQL Server Management Studio il trigger fa il suo
>dovere e mi aggiorna il campo. cosa che in questo caso io non
>vorrei pero'. Mi chiedevo se era possibile intercettare la mia
>login di accesso al MSSMS e di fare in modo che quando io entro
>questo trigger non funzioni.
>e' possibile una cosa del genere?
Ciao Maurizio,
si, certo, puoi intercettare sia la login che il nome dell'applicazione client utilizzando rispettivamente le funzioni SYSTEM_USER() e APP_NAME()
Puoi testare questi valori con una IF e procedere o meno con l'UPDATE.
>grazie mille,
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
mer 12 nov 2008 - 10:11
Grazie,
DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
ALTER TRIGGER [dbo].[lastupdate]
ON [dbo].[CallCenter]
AFTER UPDATE
AS
BEGIN
IF @sys_usr <> "MLK\a.maurizio" THEN
SET NOCOUNT ON;
update dbo.callcenter set dataAggiornamento = getdate() from inserted
where inserted.idChiamata = dbo.callcenter.idChiamata
END IF
END
assumendo che la mia utenza MLK\a.maurizio bypassi il trigger cosi ?
grazie,
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
mer 12 nov 2008 - 10:45
Salve, ho risolto, grazie di tutto.
Per la cronaca ecco l'esatto trigger inserito
USE [dbDati]
GO
/****** Oggetto: Trigger [dbo].[lastupdate] Data script: 11/12/2008 09:51:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[lastupdate]
ON [dbo].[CallCenter]
AFTER UPDATE
AS
BEGIN
DECLARE @sys_usr char(50)
SET @sys_usr = SYSTEM_USER
IF @sys_usr = 'CMT-SERVER\IUSR_CMT-SERVER'
BEGIN
SET NOCOUNT ON;
UPDATE dbo.callcenter SET dataAggiornamento = GETDATE() from inserted
WHERE inserted.idChiamata = dbo.callcenter.idChiamata
END
END
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 12 nov 2008 - 10:55
>IF @sys_usr = 'CMT-SERVER\IUSR_CMT-SERVER'
>BEGIN
> SET NOCOUNT ON;
> UPDATE dbo.callcenter SET dataAggiornamento = GETDATE()
> from inserted
> WHERE inserted.idChiamata = dbo.callcenter.idChiamata
>END
Questa IF restituisce True quando ti autentichi all'istanza con la login CMT-SERVER\IUSR_CMT-SERVER.
Tu non dovevi fare il contrario?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
mauramo33
Profilo
| Newbie
12
messaggi | Data Invio:
mer 12 nov 2008 - 10:58
si e' uguale :P
visto che tutti gli altri utenti ci si collegano attraverso un'interfaccia web con utente di IIS tanto vale controllare il loro di accesso e non il mio :P cosi io posso entrare sia come mia utenza come come utente sa :)
grazie cmq per la risposta ;)
Maurizio
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 !