PDA

View Full Version : ذخیره کردن فایل از طریق sql server



Vahid.Borhani
شنبه 02 آذر 1392, 09:10 صبح
سلام دوستان
من می خوام از طریق اس.کیو.ال 2005 یک فایل رو بر روی هارد سرور ذخیره کنم. از طریق یک برنامه معمولی که با c# نوشته شده فایل رو دریافت می کنم و به اس.کیو.ال میدم. یک راه به ذهنم رسید که کار هم می کنه ولی چون محدودیت ارسال متغییر بزرگتر از varchar(8000) دارم برای فایل های کوچیک جواب میده و با ارسال فایل های حتی معمولی هم مشکل داره.



Connection.SqlDataContext.ExecuteQuery<string>(String.Format(
@"
USE [Master]
Declare @Com Varchar(8000)
set @Com = 'LTS {0} {1} {2}'
EXEC XP_CMDSHELL @Com",
"SaveFile", Convert.ToBase64String(Bytes), FileName));



یک چیزهایی هم در مورد sqlfilestream خوندم ولی احساس کردم که به یک چیز خیلی شسته رفته تر نیاز دارم.
لطفا اگر دوستان راه دیگری سراغ دارن راهنمایی کنن و یک در دنیا صد در آخرت حالشو ببرن :چشمک:

حمیدرضاصادقیان
شنبه 02 آذر 1392, 09:40 صبح
سلام.
FileStream در نسخه ۲۰۰۸ به بعد وجود داره.
شما میتونید فیلد رواز نوع Varbinary(max) در نظر بگیرید و به صورت blob داده ها رو ذخیره کنید.

Reza_Yarahmadi
یک شنبه 03 آذر 1392, 07:51 صبح
به لینک زیر هم یه نگاه بندازید
http://barnamenevis.org/showthread.php?417859-کپی-یک-فایل-در-سرور-با-استفاده-از-IP-با-اسکیوال-سرور

in_chand_nafar
یک شنبه 03 آذر 1392, 10:40 صبح
اگر از طریق Application می خواهید فایل به دیتابیس ارسال کنید توصیه می کنم که از xp_cmdshell استفاده نکنید
1- با فعال شدن قابلیت استفاده از آن امنیت سرور کاهش پیدا می کند
2- سرویس SQL Server باید دسترسی خواندن به محل قرار گیری فایل داشته باشد. یعنی اگر از کلاینت تون قرار فایلی به سرور ارسال کنید باید آدرس اون را URL ایجاد کنید و...
در نسخه 2012 قابلیت Filetable معرفی شده است که در صورت ارتقا می توانید از آن به رخوبی استفاده کنید. اگر هم نسخه شما 2005 است دیتا تایپ خودتون رو Varbinary(max) بگیرید تا بتوانید 2GB ذخیره کنید

lilyum2
شنبه 30 آذر 1392, 15:03 عصر
اگر از طریق Application می خواهید فایل به دیتابیس ارسال کنید توصیه می کنم که از xp_cmdshell استفاده نکنید
1- با فعال شدن قابلیت استفاده از آن امنیت سرور کاهش پیدا می کند
2- سرویس SQL Server باید دسترسی خواندن به محل قرار گیری فایل داشته باشد. یعنی اگر از کلاینت تون قرار فایلی به سرور ارسال کنید باید آدرس اون را URL ایجاد کنید و...
در نسخه 2012 قابلیت Filetable معرفی شده است که در صورت ارتقا می توانید از آن به رخوبی استفاده کنید. اگر هم نسخه شما 2005 است دیتا تایپ خودتون رو Varbinary(max) بگیرید تا بتوانید 2GB ذخیره کنید

سلام
من از sql server 2008 استفاده می کنم ولی وقتی فایلی با حجم حدود 1GB رو لود می کنم و متد ذخیره رو در دیتابیس فراخوانی میکنم، با پیغام خطایی مبنی بر کمبود حافظه رم مواجه میشم:افسرده:
می خوام برنامه ای که در حال نوشتن اون هستم برای سیستم هایی که سخت افزار بالایی هم ندارن اجرا بشه. چطور باید این کار رو انجام بدم؟
ممنون میشم اگه راهنمایی کنید.

حمیدرضاصادقیان
شنبه 30 آذر 1392, 22:14 عصر
سلام.
شما میتونید از FileStream استفاده کنید.توضیحاتش در سایت وجود داره