عدم ذخیره فایل به روش sqlFileStream در sql server , asp.net
سلام دوستان وقت بخیر.من تمامی تنظیمات مربوط به استفاده از sqlFileStream در سرور و دیتابیس به خوبی انجام داده ام. مشکلی که دارم اینکه در connectionString برنامه که با asp.net web form نوشتم اینکه اگه داخل کانکشنم این تیکه "Integrated Security = true;"رو ننویسم نمی تونم فایل در سرور به روش یاد شده ذخیره کنم! ولی این اصلا منطقی نیست چرا که ما توسط user pass در کانکشن set می کنیم که به دیتابیس وصل بشیم. خیلی جالبه، با اینکه این متد ذخیره سازی، فایل ها در سرور به صورت فیزیکی نگه میداره، اگه این تیکه کد داخل کانکشن نباشه کار نمیکنه. کل اینترنت جستجو کردم و توی یه سری تاپیک ها هم دیدم که نوشتن:
FILESTREAM requires integrated security. SQL Server authentication is not supported
به نظر شما من چیکار باید کنم، آیا باید تکنولوژی ذخیره فایل در sql server عوض کنم!! یا جایی باید تنظیماتی انجام بدم. ممنون میشم راهنمایی بفرمائید.
با تشکر.
5 پاسخ
البته من تونستم مشکلم رو با sqlFileStream حل کنم و از Integrated Security هم استفاده نکردم!
مشکلم در قسمت کدی که بود که میخواست دیتا را در دیتابیس ذخیره کنه. (چون 2 تا table داشتم من از transaction در دات نت استفاده کرده بودم و این باعث می شود که خطای Timeout و ... بهم بده.)
سلام دوست عزیز، FileStream ها در SQL Server تنها از Integrated Security پشتیبانی می کنن و به همین دلیل هست که SQL نمیتونه به فایل ها در محیط شبکه (Shared) دسترسی داشته باشه. به نظرم باید مکانیزم ذخیره سازی فایل رو تغییر بدید.
خود من برای ذخیره فایل ها، برای هر فایل یک Guid ایجاد می کنم و این Guid رو در بانک ذخیره می کنم، بعد فایل رو هم با نام همین Guid رو دیسک ذخیره می کنم، هر وقت که کاربر فایل رو بخواد با نام اصلی فایل براش برمیگردونم.
شما باید یک کاربر در ویندوز ساخته و به SQL Server اضافه کنید و از طریق آن کاربر ویندوزی به SQL Server اتصال برقرار کنید.
از پاسخ شما خیلی ممنون ام.
به نظرم با این همه کارایی پس اصلا روش sqlFileStream به درد نمیخوره!!
شما چه روشی برای ذخیره فایل ها در سرور پیشنهاد می کنید:
ذخیره به صورت فیزیکی در سرور یا به صورت varBinaryMax ?