dans lequel je veux recuperer la commande SQL qui à l'origine du
declenchement du trigger !
comment puis je faire, car je ne recupere pas la bonne commande ?
Ch.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Rudi Bruchez
Christophe a écrit:
dans lequel je veux recuperer la commande SQL qui à l'origine du declenchement du trigger ! comment puis je faire, car je ne recupere pas la bonne commande ?
Rebonjour,
le DBCC INPUTBUFFER te retourne une commande de ton trigger, c'est ça ? DBCC INPUTBUFFER n'a aucune fiabilité, il te retourne ce qui reste dans ton buffer. Tu n'as pas de moyen fiable de connaître la requête qui a déclenché le trigger.
Tu peux essayer de jouer avec fn_get_sql (disponible depuis le sp3 de SQL 2000) :
(code emprunté à Kalen Delaney) -- code start -- DECLARE @Handle binary(20), @start int, @end int SELECT @Handle = sql_handle, @start = stmt_start, @end = stmt_end FROM master..sysprocesses WHERE spid = @@SPID IF NOT EXISTS (SELECT * FROM ::fn_get_sql(@Handle)) PRINT 'Handle not found in cache' ELSE SELECT 'Current statement' substring(text, (@start + 2)/2, CASE @end WHEN -1 THEN (datalength(text)) ELSE (@end + 2)/2 END)
FROM ::fn_get_sql(@Handle) -- code end --
Ou avec SQL server 2005, la fonction sys.dm_exec_sql_text http://msdn2.microsoft.com/fr-fr/library/ms181929.aspx
Mais cela ne va probablement toujours pas répondre à ton problème et te retourner un peu la même chose. Donc, en conclusion, à l'exception de ces bricolages, il n'y a pas de moyen. Tu peux par contre tracer des choses intéressantes : le hostname, le user, ... SELECT HOST_NAME(), SYSTEM_USER
-- Rudi Bruchez Consultant indépendant modélisation, administration, optimisation, Solutions MS SQL Server et informatique libre. MCDBA, SCJP2 http://www.babaluga.com/
Christophe a écrit:
dans lequel je veux recuperer la commande SQL qui à l'origine du
declenchement du trigger !
comment puis je faire, car je ne recupere pas la bonne commande ?
Rebonjour,
le DBCC INPUTBUFFER te retourne une commande de ton trigger, c'est ça ?
DBCC INPUTBUFFER n'a aucune fiabilité, il te retourne ce qui reste dans ton
buffer. Tu n'as pas de moyen fiable de connaître la requête qui a déclenché
le trigger.
Tu peux essayer de jouer avec fn_get_sql (disponible depuis le sp3 de SQL
2000) :
(code emprunté à Kalen Delaney)
-- code start --
DECLARE @Handle binary(20), @start int, @end int
SELECT @Handle = sql_handle, @start = stmt_start, @end = stmt_end
FROM master..sysprocesses WHERE spid = @@SPID
IF NOT EXISTS (SELECT * FROM ::fn_get_sql(@Handle)) PRINT 'Handle not
found in cache'
ELSE
SELECT 'Current statement' substring(text, (@start + 2)/2,
CASE @end
WHEN -1 THEN (datalength(text))
ELSE (@end -@start + 2)/2
END)
FROM ::fn_get_sql(@Handle)
-- code end --
Ou avec SQL server 2005, la fonction sys.dm_exec_sql_text
http://msdn2.microsoft.com/fr-fr/library/ms181929.aspx
Mais cela ne va probablement toujours pas répondre à ton problème et te
retourner un peu la même chose. Donc, en conclusion, à l'exception de ces
bricolages, il n'y a pas de moyen. Tu peux par contre tracer des choses
intéressantes : le hostname, le user, ...
SELECT HOST_NAME(), SYSTEM_USER
--
Rudi Bruchez
Consultant indépendant
modélisation, administration, optimisation,
Solutions MS SQL Server et informatique libre.
MCDBA, SCJP2
http://www.babaluga.com/
dans lequel je veux recuperer la commande SQL qui à l'origine du declenchement du trigger ! comment puis je faire, car je ne recupere pas la bonne commande ?
Rebonjour,
le DBCC INPUTBUFFER te retourne une commande de ton trigger, c'est ça ? DBCC INPUTBUFFER n'a aucune fiabilité, il te retourne ce qui reste dans ton buffer. Tu n'as pas de moyen fiable de connaître la requête qui a déclenché le trigger.
Tu peux essayer de jouer avec fn_get_sql (disponible depuis le sp3 de SQL 2000) :
(code emprunté à Kalen Delaney) -- code start -- DECLARE @Handle binary(20), @start int, @end int SELECT @Handle = sql_handle, @start = stmt_start, @end = stmt_end FROM master..sysprocesses WHERE spid = @@SPID IF NOT EXISTS (SELECT * FROM ::fn_get_sql(@Handle)) PRINT 'Handle not found in cache' ELSE SELECT 'Current statement' substring(text, (@start + 2)/2, CASE @end WHEN -1 THEN (datalength(text)) ELSE (@end + 2)/2 END)
FROM ::fn_get_sql(@Handle) -- code end --
Ou avec SQL server 2005, la fonction sys.dm_exec_sql_text http://msdn2.microsoft.com/fr-fr/library/ms181929.aspx
Mais cela ne va probablement toujours pas répondre à ton problème et te retourner un peu la même chose. Donc, en conclusion, à l'exception de ces bricolages, il n'y a pas de moyen. Tu peux par contre tracer des choses intéressantes : le hostname, le user, ... SELECT HOST_NAME(), SYSTEM_USER
-- Rudi Bruchez Consultant indépendant modélisation, administration, optimisation, Solutions MS SQL Server et informatique libre. MCDBA, SCJP2 http://www.babaluga.com/
Christophe
arf flute dommage j'aurais biena imé avoir la commande qui l'a declenché ! je vais regarder du coté de fn_get_sql
"Rudi Bruchez" <"rudi#nospam#[at]babaluga.com"> a écrit dans le message de news:
Christophe a écrit:
> dans lequel je veux recuperer la commande SQL qui à l'origine du > declenchement du trigger ! > comment puis je faire, car je ne recupere pas la bonne commande ?
Rebonjour,
le DBCC INPUTBUFFER te retourne une commande de ton trigger, c'est ça ? DBCC INPUTBUFFER n'a aucune fiabilité, il te retourne ce qui reste dans
ton
buffer. Tu n'as pas de moyen fiable de connaître la requête qui a
déclenché
le trigger.
Tu peux essayer de jouer avec fn_get_sql (disponible depuis le sp3 de SQL 2000) :
(code emprunté à Kalen Delaney) -- code start -- DECLARE @Handle binary(20), @start int, @end int SELECT @Handle = sql_handle, @start = stmt_start, @end = stmt_end FROM master..sysprocesses WHERE spid = @@SPID IF NOT EXISTS (SELECT * FROM ::fn_get_sql(@Handle)) PRINT 'Handle not found in cache' ELSE SELECT 'Current statement' > substring(text, (@start + 2)/2, CASE @end WHEN -1 THEN (datalength(text)) ELSE (@end + 2)/2 END)
FROM ::fn_get_sql(@Handle) -- code end --
Ou avec SQL server 2005, la fonction sys.dm_exec_sql_text http://msdn2.microsoft.com/fr-fr/library/ms181929.aspx
Mais cela ne va probablement toujours pas répondre à ton problème et te retourner un peu la même chose. Donc, en conclusion, à l'exception de ces bricolages, il n'y a pas de moyen. Tu peux par contre tracer des choses intéressantes : le hostname, le user, ... SELECT HOST_NAME(), SYSTEM_USER
-- Rudi Bruchez Consultant indépendant modélisation, administration, optimisation, Solutions MS SQL Server et informatique libre. MCDBA, SCJP2 http://www.babaluga.com/
arf flute dommage j'aurais biena imé avoir la commande qui l'a declenché !
je vais regarder du coté de fn_get_sql
"Rudi Bruchez" <"rudi#nospam#[at]babaluga.com"> a écrit dans le message de
news:l0864xdpikdi.1kw41fdvb9k0l.dlg@40tude.net...
Christophe a écrit:
> dans lequel je veux recuperer la commande SQL qui à l'origine du
> declenchement du trigger !
> comment puis je faire, car je ne recupere pas la bonne commande ?
Rebonjour,
le DBCC INPUTBUFFER te retourne une commande de ton trigger, c'est ça ?
DBCC INPUTBUFFER n'a aucune fiabilité, il te retourne ce qui reste dans
ton
buffer. Tu n'as pas de moyen fiable de connaître la requête qui a
déclenché
le trigger.
Tu peux essayer de jouer avec fn_get_sql (disponible depuis le sp3 de SQL
2000) :
(code emprunté à Kalen Delaney)
-- code start --
DECLARE @Handle binary(20), @start int, @end int
SELECT @Handle = sql_handle, @start = stmt_start, @end = stmt_end
FROM master..sysprocesses WHERE spid = @@SPID
IF NOT EXISTS (SELECT * FROM ::fn_get_sql(@Handle)) PRINT 'Handle not
found in cache'
ELSE
SELECT 'Current statement' > substring(text, (@start + 2)/2,
CASE @end
WHEN -1 THEN (datalength(text))
ELSE (@end -@start + 2)/2
END)
FROM ::fn_get_sql(@Handle)
-- code end --
Ou avec SQL server 2005, la fonction sys.dm_exec_sql_text
http://msdn2.microsoft.com/fr-fr/library/ms181929.aspx
Mais cela ne va probablement toujours pas répondre à ton problème et te
retourner un peu la même chose. Donc, en conclusion, à l'exception de ces
bricolages, il n'y a pas de moyen. Tu peux par contre tracer des choses
intéressantes : le hostname, le user, ...
SELECT HOST_NAME(), SYSTEM_USER
--
Rudi Bruchez
Consultant indépendant
modélisation, administration, optimisation,
Solutions MS SQL Server et informatique libre.
MCDBA, SCJP2
http://www.babaluga.com/
arf flute dommage j'aurais biena imé avoir la commande qui l'a declenché ! je vais regarder du coté de fn_get_sql
"Rudi Bruchez" <"rudi#nospam#[at]babaluga.com"> a écrit dans le message de news:
Christophe a écrit:
> dans lequel je veux recuperer la commande SQL qui à l'origine du > declenchement du trigger ! > comment puis je faire, car je ne recupere pas la bonne commande ?
Rebonjour,
le DBCC INPUTBUFFER te retourne une commande de ton trigger, c'est ça ? DBCC INPUTBUFFER n'a aucune fiabilité, il te retourne ce qui reste dans
ton
buffer. Tu n'as pas de moyen fiable de connaître la requête qui a
déclenché
le trigger.
Tu peux essayer de jouer avec fn_get_sql (disponible depuis le sp3 de SQL 2000) :
(code emprunté à Kalen Delaney) -- code start -- DECLARE @Handle binary(20), @start int, @end int SELECT @Handle = sql_handle, @start = stmt_start, @end = stmt_end FROM master..sysprocesses WHERE spid = @@SPID IF NOT EXISTS (SELECT * FROM ::fn_get_sql(@Handle)) PRINT 'Handle not found in cache' ELSE SELECT 'Current statement' > substring(text, (@start + 2)/2, CASE @end WHEN -1 THEN (datalength(text)) ELSE (@end + 2)/2 END)
FROM ::fn_get_sql(@Handle) -- code end --
Ou avec SQL server 2005, la fonction sys.dm_exec_sql_text http://msdn2.microsoft.com/fr-fr/library/ms181929.aspx
Mais cela ne va probablement toujours pas répondre à ton problème et te retourner un peu la même chose. Donc, en conclusion, à l'exception de ces bricolages, il n'y a pas de moyen. Tu peux par contre tracer des choses intéressantes : le hostname, le user, ... SELECT HOST_NAME(), SYSTEM_USER
-- Rudi Bruchez Consultant indépendant modélisation, administration, optimisation, Solutions MS SQL Server et informatique libre. MCDBA, SCJP2 http://www.babaluga.com/