ورود

View Full Version : سوال: حذف فایلها در کامپیوتر با کد sql



masoud4
پنج شنبه 12 شهریور 1388, 23:29 عصر
با سلام و خسته نباشید
یک کد تریگر برای "اس کیو ال" میخوام که موقع حذف اطلاعات چند رکورد، فایلهایی را که آدرس آنها در فیلد این رکوردها هستند را از روی کامپیوتر حذف کند.
با جواب دادن به این سوال لطف بزرگی در حق من کردید.

AminSobati
جمعه 13 شهریور 1388, 20:06 عصر
سلام دوست عزیز،
آدرس این فیلدها رو که با Query گرفتن از جداول مجازی Inserted یا Deleted میتونین بدست بیارین. با Cursor روی اونها حرکت کنید و با xp_cmdshell حذف انجام بدین

محمد سلیم آبادی
شنبه 14 شهریور 1388, 01:52 صبح
واقعا" باید به T-SQL آفرین گفت!
اصلا فکرش نمی کردم که در SQL همچین امکانی برای اجرای command های ویندوز وجود داشته باشد!

ولی وقتی خواستم از این دستور استفاده کنم، کمی دچار مشکل شدم... به هر حال در مسیر زیر:

Start --> Programs --> Microsoft SQL Server 2005 --> Configuration tools -->SQL Server Surface Area configuration --> Surface Area Configuration for features --> xp_cmdshell --> Checked Enable xp_cmdshell

این مشکل بر طرف شد!
برای چگونگی نوشتن این تریگر یک مثال آوردم:



--create a table
create table Sample
(
address nvarchar(200)
primary key
)
GO
--Insert some rows to the table
insert into Sample
select N'c:\txt1.txt' union all
select N'c:\txt2.txt' union all
select N'c:\txt3.txt'
GO
--Delete specified files when records is deleted
create trigger trg
on Sample
after delete
as
begin
declare @address nvarchar(200),
@Command_String nvarchar(200)
declare cur cursor
for select * from deleted
open cur
fetch next from cur into @address
while @@fetch_status=0
begin
set @command_String='del '+@address
execute xp_cmdshell @command_String
fetch next from cur into @address
end
close cur
deallocate cur
end
GO

delete sample
where address=N'c:\txt3.txt'

AminSobati
شنبه 14 شهریور 1388, 09:33 صبح
به کمک دستورات داخل SQL Server هم میتونین Enable کنید. رجوع شود به sp_configure!

masoud4
شنبه 14 شهریور 1388, 17:50 عصر
با تشکر از شما دوستان گرامی