PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : IP کاربر



b_itman_b
16 / February / 1970, 11:36 AM
سلام.با چه دستوری میتونم آی پی کاربری که داره با برنامه کار میکنه رو استخراج کنم.حقیقت امر واسه پیدا کردن این که تغییرات در جداول رو* توسط کاربران ردگیری کنم به ذهنم رسید که یه فیلد به جداولم اضافه کنم و مقدار آی پی کاربر رو وارد اون کنم ولی با په کدی نمیدونم

b_itman_b
16 / February / 1970, 11:36 AM
ممنون.من با تریگر ها تقریبا به صورت تئوری آشنا هستم ولی نه دقیق.از کد شما هم راستش زیاد سر در نیاوردم.یه موضوع دیگه هم اینه که شنیدم بحث تریگر ها کاهش سرعت میشه.اگه لطف کنید و هم این تریگری رو که نوشتین کامل تر توضیح بدین و هم اینکه دستور دادن آی پی کاربر رو بدین ممنون میشم.راستی لطفا بگین این دستورات که نوشتین تو SQL2000 یا 2005 یا 2008 باهم فرق دارن یا نه

admin
16 / February / 1970, 11:36 AM
سلام .من خودم معمولا یک تریگر در سمت دیتابیس می نویسم که این کار رو انجام میده ، به صورت زیر:


کد:


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)

admin
16 / February / 1970, 11:36 AM
اول که این تریگر زیاد سخت نیست ، تریگر رو بر روی آن جدولی ایجاد می کنیم که قراره کنترل اش کنیم.
ضمنا با این تابع زیر :



کد:


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()

ضمنا وقتی از کد نویسی استفاده می کنیم ، تقریبا میشه گفت در تمامی ورژن ها کد یکسانه ...