-
IP کاربر
سلام.با چه دستوری میتونم آی پی کاربری که داره با برنامه کار میکنه رو استخراج کنم.حقیقت امر واسه پیدا کردن این که تغییرات در جداول رو* توسط کاربران ردگیری کنم به ذهنم رسید که یه فیلد به جداولم اضافه کنم و مقدار آی پی کاربر رو وارد اون کنم ولی با په کدی نمیدونم
-
ممنون.من با تریگر ها تقریبا به صورت تئوری آشنا هستم ولی نه دقیق.از کد شما هم راستش زیاد سر در نیاوردم.یه موضوع دیگه هم اینه که شنیدم بحث تریگر ها کاهش سرعت میشه.اگه لطف کنید و هم این تریگری رو که نوشتین کامل تر توضیح بدین و هم اینکه دستور دادن آی پی کاربر رو بدین ممنون میشم.راستی لطفا بگین این دستورات که نوشتین تو SQL2000 یا 2005 یا 2008 باهم فرق دارن یا نه
-
سلام .من خودم معمولا یک تریگر در سمت دیتابیس می نویسم که این کار رو انجام میده ، به صورت زیر:
کد:
کد:
CREATE TRIGGER [dbo].[log] ON [dbo].[data_base]
FOR INSERT, UPDATE, DELETE As
DECLARE @fname Nvarchar ( 50 )
SELECT @fname = n_f
FROM
deleted;
DECLARE @fname1 Nvarchar ( 50 )
SELECT @fname1 = n_f
FROM
inserted;
insert into dbo.sabt(pc,fdate,usr,id,app,n_f_delete,n_f_update)
values
(host_name(),getdate(),suser_sname(),HOST_ID(),APP_NAME(),@fname,@fname1)
-
اول که این تریگر زیاد سخت نیست ، تریگر رو بر روی آن جدولی ایجاد می کنیم که قراره کنترل اش کنیم.
ضمنا با این تابع زیر :
کد:
کد:
CREATE FUNCTION [dbo].[GetCurrentIP] ()
RETURNS varchar(255)
AS
BEGIN
* DECLARE @IP_Address varchar(255);
* SELECT @IP_Address = client_net_address
* FROM
sys.dm_exec_connections *
WHERE
Session_id = @@SPID;
*Return @IP_Address;
*END
بعدش هم دیگه باید اون تابع رو به تریگر بالا اضافه کنید ، البته با دستور زیر هم میشه آی پی کاربر رو گرفت.
اوکی ؟
*
کد:
کد:
SELECT dbo.GetCurrentIP()
ضمنا وقتی از کد نویسی استفاده می کنیم ، تقریبا میشه گفت در تمامی ورژن ها کد یکسانه ...