-
2 ضمیمه
چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام.
دارم با FileTable کار میکنم و مطالب این سایت رو خوندم
نتیجه راهنمای بالا باید تصویر زیر باشه
ضمیمه 148973
ولی نتیجه کار من بصورت زیر شده
ضمیمه 148974
کسی میتونه راهنمایی کنه. مرجعی هست که در این خصوص کامل توضیح داده باشه؟
درضمن مطابق راهنمای سایت، دستور ساخت SubDirectory به درستی در SQL کار میکنه ولی در Explorer ویندوز هیچ پوشه ای رو نمیبینم که اضافه شده باشد.
تشکر
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
دوستان کسی نمیتونه کمکم کنه...
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام. کاش کدهای خودت رو هم میذاشتی شاید دوستان بتونن کمک کنن
-
6 ضمیمه
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام
ابتدا در SQL Server Configuration Manager گزینه Enable FileStream رو به همراه سایر گزینه های این بخش فعال کردم
ضمیمه 149490
در SQL Server Management گزینه FileStream Access Level را برابر Full Access Enabled قرار دادم.
پس از اون تنظیم بانک اطلاعاتی رو به شکل زیر انجام داده:
ابتدا در ّFileGroups
ضمیمه 149491
تنظیمات بخش Files
ضمیمه 149492
تنظیمات بخش Options
ضمیمه 149493
در انتها با کدهای زیر جدول رو ایجاد کردم و جدول ایجاد شد
USE TestFT
GO
CREATE TABLE tblFT AS FILETABLE
WITH
(
FILETABLE_DIRECTORY = 'TestFT_FT',
FILETABLE_COLLATE_FILENAME = database_default
)
GO
با استفاده از StoredProcedure زیر فایل رو ذخیره میکنم
CREATE PROCEDURE SaveFile
-- Add the parameters for the stored procedure here
@FileStream VARBINARY(max),
@FileName NVARCHAR(150)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO tblFT (file_stream,name,is_directory,is_archive) VALUES (@FileStream,@FileName, 1, 0);
END
GO
کد زیر هم مربوط میشه به VB.NET
Dim FS As Byte()
Dim FN As String
FS = IO.File.ReadAllBytes("D:\TestFT.txt")
FN = "TestFT"
bal.SaveFile(FS, FN)
تصویر زیر پس از ذخیره فایل
ضمیمه 149494
این هم نتیجه ذخیره فایل در هارد دیسک
ضمیمه 149495
ممنون میشم اگر دوستان راهنمایی کنند
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
جدای مشکل بالا چندین سوال دیگه هم داشتم:
- اگر قرار باشه تعداد بسیار زیادی فایل در سرور ذخیره بشه ایا ذخیره همه فایل ها در یک Directory مشکل ساز نیست؟ کند شدن سیستم و مسائل دیگه ای که شاید به ذهن من نرسه
- مثلا برنامه بخشی داره که هر کاربر میتونه اطلاعات خودشو آپلود کنه و گزارش تصویری در برنامه بصورت عکس ذخیره کنه حالا اگر 10 کاربر هرکدوم عکسهایی با نام های مشابه داشته باشند SQL نام های مشابه قبول نمیکنه و خطا میده. برای این چه راه حلی وجود داره؟ منظورم ذخیره فایل با اسامی مشابه هست.
تشکر
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
من هم به نوعی همین شکلی کار کردم. لینک بالا کار با فایل بصورت FileStream هستش و نتیجه هم درسته ولی در FileTable فایل های با نام خودشان ذخیره میشوند و باید بتوان Directory تولید کرد که در نمونه خودم این مورد بوجود نمیاد.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
مسئله اول که در خصوص FileTable و FileStream هستش هنوز موفق نشدم حلش کنم.
اما در خصوص اینکه فایل های مختلف رو بتونم در پارتیشن های مختلف ذخیره کنم یه راه حل به ذهنم رسید و اون اینه که به ازای هر گروه از فایل های برنامه که حدود 3 گروه اصلی هستند، 3 بانک اطلاعاتی مجزا ایجاد کنم و هر بانک اطلاعاتی تنها حاوی یک جدول FileStream خواهد بود و در زمان ارسال فایل کافیه که فایل رو به بانک خودش ارسال کنم.
ممنون میشم اگر دوستان نظر بدند
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
جدای مشکل بالا چندین سوال دیگه هم داشتم:
- اگر قرار باشه تعداد بسیار زیادی فایل در سرور ذخیره بشه ایا ذخیره همه فایل ها در یک Directory مشکل ساز نیست؟ کند شدن سیستم و مسائل دیگه ای که شاید به ذهن من نرسه
- مثلا برنامه بخشی داره که هر کاربر میتونه اطلاعات خودشو آپلود کنه و گزارش تصویری در برنامه بصورت عکس ذخیره کنه حالا اگر 10 کاربر هرکدوم عکسهایی با نام های مشابه داشته باشند SQL نام های مشابه قبول نمیکنه و خطا میده. برای این چه راه حلی وجود داره؟ منظورم ذخیره فایل با اسامی مشابه هست.
تشکر
1 رو نمیدونم
2 خود sql server اسامی فایل ها رو تغییر میده و نام یونیک میزاره. نام ها تکراری نیستند . شما باید تو جداول نام فایل رو ذخیره کنید
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
مکلم با نام فایل نیست. هدفم از تفکیک جداول این بود که سه گروه متفاوت فایل دارم و به دلیل حجم بالای فایل ها میخوام هر گروه رو روی یک هارد جداگانه ذخیره کنم.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
مکلم با نام فایل نیست. هدفم از تفکیک جداول این بود که سه گروه متفاوت فایل دارم و به دلیل حجم بالای فایل ها میخوام هر گروه رو روی یک هارد جداگانه ذخیره کنم.
سه جدول جدا توی یک دپیتابیس بساز
هر جدول رو به یک فایل گروپ نسبت بده
هر فایل گروپ رو روی یک هارد بساز
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
من جداول رو ساختم ولی دیگه فایل ذخیره نمیشه. از نمونه کد زیر استفاده کردم:
CREATE TABLE [tblFiles]
( FileId UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL UNIQUE DEFAULT(NEWID()),
Title NVARCHAR(255) NOT NULL,
SystemFile VARBINARY(MAX) FILESTREAM NULL )
ON [PRIMARY] FILESTREAM_ON [fsg1]
من در خط آخر در هر جدول از نام Filegroup استفاده کردم. نمیدونم روشم درست بوده یا خیر؟
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
آقا درست شد و الان داره جواب میده. فقط یه مشکلی دارم. زمانی که در قسمت File برای بار اول مسیر تعریف میکنم و پنجره رو میبندم و مجدد باز میکنم دیگه امکان تغییر Path وجود نداره. اگر میشه در این خصوص راهنمایی کنید. اصلا بطور کل میخوام بدونم چطور میشه Location رو بعد از ذخیره کلی فایل تغییر داد. تشکر
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام.
الان من دو تا جدول دارم که فایل های رو در دو درایو مجزا ذخیره میکنه. اما حالا میخوام بانک اطلاعاتیم رو ببرم روی سیستم دیگه Attach کنم. اما چند مشکل وجود داره:
- من اطلاعات یک جدول رو حذف کردم و هیچ رکوردی وجود نداره و همچنین از Shrink > File رو هم اجرا کردم ولی همچنان فضای اشغال شده دارم. البته از نظر SQL و اجازه نمیده در تنظیمات بانک اطلاعاتیم File ایجاد شده به عنوان FileStream رو حذف کنم.
- در چنین شرایطی که طراحی بانک در کامپیوتر خودم انجام شده و باید به یک سیستم دیگه ای انتقال پیدا کنه باید چکار کرد؟ چون در سیستم بعدی در زمان Attach کردن اگر مسیرهای انتخاب شده وجود ناشته باشند خطا میده.
ممنون
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
مسئله اول که در خصوص FileTable و FileStream هستش هنوز موفق نشدم حلش کنم.
اما در خصوص اینکه فایل های مختلف رو بتونم در پارتیشن های مختلف ذخیره کنم یه راه حل به ذهنم رسید و اون اینه که به ازای هر گروه از فایل های برنامه که حدود 3 گروه اصلی هستند، 3 بانک اطلاعاتی مجزا ایجاد کنم و هر بانک اطلاعاتی تنها حاوی یک جدول FileStream خواهد بود و در زمان ارسال فایل کافیه که فایل رو به بانک خودش ارسال کنم.
ممنون میشم اگر دوستان نظر بدند
میتونید چند Data Container و یا چند فایل گروپ داشته باشید. نیازی به چند جدول نیست.
https://dba.stackexchange.com/questi...ngle-filegroup
https://www.sqlshack.com/sql-server-...and-filegroups
https://www.sqlshack.com/sql-server-...and-filegroups
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
تشکر. اگر در مورد پست #14 هم راهنمایی کنید ممنون میشم
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
دوستان به یه مشکلی برخوردم. برحسب اشتباه محتویات پوشه ای که به عنوان Path در File انتخاب کرده بودم رو پاک کردم و الان جلوی بانک اطلاعاتیم عبارت Recovery Pending نوشته و دسترسی به بانک اطلاعاتیم ندارم.
لطفا کمک کنید. چطور میتونم این مشکل رو حل کنم. البته با یک نرم افزار بانک رو Recovery کردم ولی وقتی به Properties میرم بخش FileGroup خاموشه.
ممنون
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
دوستان به یه مشکلی برخوردم. برحسب اشتباه محتویات پوشه ای که به عنوان Path در File انتخاب کرده بودم رو پاک کردم و الان جلوی بانک اطلاعاتیم عبارت Recovery Pending نوشته و دسترسی به بانک اطلاعاتیم ندارم.
لطفا کمک کنید. چطور میتونم این مشکل رو حل کنم. البته با یک نرم افزار بانک رو Recovery کردم ولی وقتی به Properties میرم بخش FileGroup خاموشه.
ممنون
فایل filestream.hdr درون پوشه را ریکاوری کنید و برگردانید داخل پوشه و سرویس اسکیول را ریستارت کنید.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
سلام.
الان من دو تا جدول دارم که فایل های رو در دو درایو مجزا ذخیره میکنه. اما حالا میخوام بانک اطلاعاتیم رو ببرم روی سیستم دیگه Attach کنم. اما چند مشکل وجود داره:
- من اطلاعات یک جدول رو حذف کردم و هیچ رکوردی وجود نداره و همچنین از Shrink > File رو هم اجرا کردم ولی همچنان فضای اشغال شده دارم. البته از نظر SQL و اجازه نمیده در تنظیمات بانک اطلاعاتیم File ایجاد شده به عنوان FileStream رو حذف کنم.
- در چنین شرایطی که طراحی بانک در کامپیوتر خودم انجام شده و باید به یک سیستم دیگه ای انتقال پیدا کنه باید چکار کرد؟ چون در سیستم بعدی در زمان Attach کردن اگر مسیرهای انتخاب شده وجود ناشته باشند خطا میده.
ممنون
https://docs.microsoft.com/en-us/sql...ql-server-2017
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
فایل filestream.hdr درون پوشه را ریکاوری کنید و برگردانید داخل پوشه و سرویس اسکیول را ریستارت کنید.
منظورتون از ریکاوری، همون بازیابی فایل های حذف شده هستش یا سازوکاری در SQL برای اینکار وجود داره؟ اگه بازیابی فایل حذف شده هستش فرض کنیم فایل مورد نظر بازیابی نشه، اونوقت تکلیف چیه؟ یعنی تمام فایل های ذخیره شده از بین میرن؟
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
منظورتون از ریکاوری، همون بازیابی فایل های حذف شده هستش یا سازوکاری در SQL برای اینکار وجود داره؟ اگه بازیابی فایل حذف شده هستش فرض کنیم فایل مورد نظر بازیابی نشه، اونوقت تکلیف چیه؟ یعنی تمام فایل های ذخیره شده از بین میرن؟
بله منظورم بازیابی فایل هست.
راه دیگر اینکه
اگر از دیتابیس بکاپ دارید یک دیتابیس جدید ایجاد و restore کنید.
یا اینکه
یک دیتابیس جدید ایجاد کنید. دیتابیس جدید را offline کنید. از فایل های دیتابیس خراب یک کپی بگیرید و به محل فایلهای دیتابیس جدید رفته و جایگذین فایلهای دیتابیس جدید کنید. دیتابیس جدید را online کنید.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
نقل قول:
نوشته شده توسط
mmbguide
آقا درست شد و الان داره جواب میده. فقط یه مشکلی دارم. زمانی که در قسمت File برای بار اول مسیر تعریف میکنم و پنجره رو میبندم و مجدد باز میکنم دیگه امکان تغییر Path وجود نداره. اگر میشه در این خصوص راهنمایی کنید. اصلا بطور کل میخوام بدونم چطور میشه Location رو بعد از ذخیره کلی فایل تغییر داد. تشکر
سلام دوست عزیز منم کلی راجب همین فایل تیبل سرچ کردم و آخرگیج شدم. اگه در امکانتون هست و وقتشو دارید یه پروژه ساده تک فرمه برای مثال ذخیره اسم و یه فایل اینجا بزارید ازش الگو بگیریم. نحوه فعال کردن فایل تیبل رو هم بگید ممنون میشم
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام. تا آخر همین هفته یه نمونه ساه برات آماده میکنم.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام. مطابق آنچه که در ابتدای همین تاپیک گفته شده عمل کنید. در حقیقت در زمان ذخیره سازی اطلاعات باید مشابه همون حالتی که برای اطلاعات معمولی در SQL عمل می کنید کار رو انجام بدید. درواقع کدهای ساده که در پست های بالا اومده جواب میده. البته سعی میکنم حتما یک نمونه آماده کنم. بنابه مشکلات فعلا موفق نشدم که نمونه برایتان آماده کنم ولی بزودی براتون تهیه میکنم.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
سلام. با توجه به راهنمایی دوستان در حال حاضر دارم با FileStream کار میکنم. حالا سوالم درخصوص تغییر آدرس FileStream هستش. برای تغییر آدرس اونطور که در سایت های مختلف جستجو کردم باید مراحل زیر به ترتیب انجام بشه:
حذف ستون Varbinary
ALTER TABLE Items DROP COLUMN ItemImage
قطع ارتباط FileStream با جدول
ALTER TABLE Items SET (FILESTREAM_ON = "NULL")
حذف FileGroup
ALTER DATABASE NorthPole REMOVE FILE NorthPoleFS ;
ALTER DATABASE NorthPole REMOVE FILEGROUP NorthPoleFS ;
خودم این روش را تست نکردم و سوالم اینه که با حذف ستون Varbinary چه اتفاقی برای فایل ها میوفته. چون جایی به این موضوع اشاره نکرده که فرض این باشه که حدود 2000 تا فایل در جدول ذخیره شده باشه و من هم فکر میکنم منظور نویسنده این بوده که جدول هنوز خالیه و هیچ رکوردی ندارد. حالا آیا با این کار و تغییر Path با وجود فایل hdr در مسیر تعریف شده آیا پس از ایجاد ستون جدید و اتصال FileStream جدید به جدول، میتونم از تمام فایل ها استفاده کنم یا خیر.
امیدوارم مطلب نامفهوم نبوده باشه. تشکر
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه
در لینکی که چند پست قبل ارسال کردم توضیح داده شده.
-
نقل قول: چرا فایل هایی که بصورت FileStream به SQL میفرستم با اسامی نامفهوم ذخیره میشه