ورود

View Full Version : مشکل read only شدن پایگاه



farzadkamali
یک شنبه 29 شهریور 1394, 21:01 عصر
با سلام
بعد از نصب sql express 2008 r2 و اتچ پایگاه ، یه مشکل پیش میاد که پایگاه read only میشه و نمیشه رکورد ثبت کرد.
روی ویندوز 8.1 که بلااستثناء resd only میشه و روی 7 و xp هم گاهی اوقات میشه و گاهی نمیشه.
تمامی تالارها و فروم ها رو هم گشتم کد زیر رو پیدا کردم که روی express 2008 r2 جواب نمیده و ارور میده.


ALTER DATABASE db1 SET READ_WRITE WITH NO_WAIT'

حتی کد زیر رو هم تست کردم


Query.SQL.Text:='ALTER DATABASE db1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE';
Query.ExecSQL;
Query.SQL.Text:='ALTER DATABASE db1 SET READ_WRITE';
Query.ExecSQL;
Query.SQL.Text:='ALTER DATABASE db1 SET MULTI_USER';
Query.ExecSQL;


روی سیستم خودم که sql enterprise r2 هست اروری نمیده و ظاهرا با موفقیت انجام میشه اما روی express r2 جواب نمیده.
ممنون میشم دوستان راهنمایی کنند.
به هرجا زدم به در بسته خورم

pbm_soy
یک شنبه 29 شهریور 1394, 23:53 عصر
فایل دیتابیس را در کدام درایو قرارذمیدهید؟
در ویندوزهای ۷ و ۸ معمولا درایو c خیلی چفت بست شده است برای موارد امنیتی
شما فقط از فولدرهای خاصی برای نوشتن و خوا‌ندن میتوانید استفاده کنید ویا اینکه دیتابیس را در درایوهای دیگر قرار بدهید
حتی المکان اگر میخواهید بدون دردسر باشید از درایوهایی با فرمت fat , fat32 استفاده کنید ویا اگر از درایو ntfs استفاده میکنید permissionهای فولدر موردنظر را درست تنظیم کنید
فولدرهای مربوط به کاربر معمولا دسترسی فول به خود آن کاربر میدهند

farzadkamali
دوشنبه 30 شهریور 1394, 10:41 صبح
فایل دیتابیس را در کدام درایو قرارذمیدهید؟
در ویندوزهای ۷ و ۸ معمولا درایو c خیلی چفت بست شده است برای موارد امنیتی
شما فقط از فولدرهای خاصی برای نوشتن و خوا‌ندن میتوانید استفاده کنید ویا اینکه دیتابیس را در درایوهای دیگر قرار بدهید
حتی المکان اگر میخواهید بدون دردسر باشید از درایوهایی با فرمت fat , fat32 استفاده کنید ویا اگر از درایو ntfs استفاده میکنید permissionهای فولدر موردنظر را درست تنظیم کنید
فولدرهای مربوط به کاربر معمولا دسترسی فول به خود آن کاربر میدهند
توی درایو c قرار میدم و کنار محل نصب نرم افزار
درسته. فولدرهای توی درایو c همگی read only هستند.
جالب اینجاست که تمامی پوشه ها توی تمامی درایو های من read only هست و تحت هیچ شرایط هم از حالت read only خارج نمیشه.
با این حال من نرم افزار رو روی درایو d نصب کردم و مشکل حل شد در حالی که بازم پوشه هاش read only بودن. بنابراین فکر نکنم ربطی به این موضوع داشته باشه.

pbm_soy
سه شنبه 31 شهریور 1394, 01:34 صبح
Read only بودن فولدرها را از طریق proprties آن نگاه میکنید؟
منظور من permission یا همون خصیصه های ntfs است!
ویندوز برای کنترل دسترسی فولدر را با یک تیک readonly نمیکند از طریق امکانات ntfs اینکار را انجام میدهد در اینصورت میتوان یک یا چند کاربر و یا یک گروه کاربری را برای کار بایک فولدر دسترسی داد و همینطور برای هرکدام خصیصه هایی مانند خواندن و نوشتن و ایجاد فایل و ویرایش و حذف و اجرا و غیره را به آنها داد!
برای دیدن این موارد در پنجره propertis یک فولدر تب security را باز کنید اگر این تب وجود ندارد از folder options تب view گزینه simple file sharing را غیر فعال کنید در ویندوز ۷ هم به همین ترتیب است

farzadkamali
سه شنبه 31 شهریور 1394, 16:35 عصر
Read only بودن فولدرها را از طریق proprties آن نگاه میکنید؟
منظور من permission یا همون خصیصه های ntfs است!
ویندوز برای کنترل دسترسی فولدر را با یک تیک readonly نمیکند از طریق امکانات ntfs اینکار را انجام میدهد در اینصورت میتوان یک یا چند کاربر و یا یک گروه کاربری را برای کار بایک فولدر دسترسی داد و همینطور برای هرکدام خصیصه هایی مانند خواندن و نوشتن و ایجاد فایل و ویرایش و حذف و اجرا و غیره را به آنها داد!
برای دیدن این موارد در پنجره propertis یک فولدر تب security را باز کنید اگر این تب وجود ندارد از folder options تب view گزینه simple file sharing را غیر فعال کنید در ویندوز ۷ هم به همین ترتیب است

دوست عزیز این کارهارو هم انجام دادم اما بی نتیجه بوده.

pbm_soy
چهارشنبه 01 مهر 1394, 01:54 صبح
در کجا؟ دقیقا چه کاری را انجام دادید؟!

farzadkamali
چهارشنبه 01 مهر 1394, 10:20 صبح
در کجا؟ دقیقا چه کاری را انجام دادید؟!
سربرگ security و قسمت edit حق دسترسی ها رو full control کردم.
همینطور سربرگ security و قسمت permisions for everyone و قسمت advanced رو نیز تنظیم کردم و دسترسی full دادم. اما بی فایده بود.

محمد آشتیانی
چهارشنبه 01 مهر 1394, 12:24 عصر
سلام
شما در برگه Edit ، دکمه Add رو بزنید و یوزر Everyone رو اضافه کنید با دسترسی کامل (Full Control) مشکل حل میشه.
ضمنا برای اطمینان Attribute های فایل دیتابیستون رو هم چک کنید تا Read Onlyنباشه.


موفق باشید.

farzadkamali
پنج شنبه 02 مهر 1394, 10:38 صبح
سلام
شما در برگه Edit ، دکمه Add رو بزنید و یوزر Everyone رو اضافه کنید با دسترسی کامل (Full Control) مشکل حل میشه.
ضمنا برای اطمینان Attribute های فایل دیتابیستون رو هم چک کنید تا Read Onlyنباشه.


موفق باشید.

مشکل حل نشد.
نهایتا یه بک آپ خام از یه سیستمی که read only نمیشد برداشتم و از خود برنامم restore کردم توی سیستمی که rad only مشه. فعلا که مشکل حل شد. ولی دلیلش رو نفهمیدم و اینکه چه طوری اصولی حل میشه.
در نهایت ممنون از دوستان بابت راهنمایی هاشون

pbm_soy
جمعه 03 مهر 1394, 02:49 صبح
آیا تنظیماتی که انجام میدادید اعمال میشد؟ یعنی وقتی آن . پنجره رادوباره باز میکردید مقادیر ثبت شده بودند؟
شاید ویروسی ویا بدافزاری در سیستم بوده!
در ضمن پس تنظیمات چطوری تست میکردی؟ ویا اینک. تنظیمات را روی چه فولدری سعی کردی ست کنی؟
نسخه ویندوز چند است؟
با چه username وارد سیستم میشدید واینکارها را انجام میدادید؟

farzadkamali
جمعه 03 مهر 1394, 09:45 صبح
آیا تنظیماتی که انجام میدادید اعمال میشد؟ یعنی وقتی آن . پنجره رادوباره باز میکردید مقادیر ثبت شده بودند؟
شاید ویروسی ویا بدافزاری در سیستم بوده!
در ضمن پس تنظیمات چطوری تست میکردی؟ ویا اینک. تنظیمات را روی چه فولدری سعی کردی ست کنی؟
نسخه ویندوز چند است؟
با چه username وارد سیستم میشدید واینکارها را انجام میدادید؟
بله تنظیمات انجام میشد.
فکر نمیکنم ویروس باشه چون روی چندین سیستم امتحان کردم و برخی از مشتری ها هم همین مشکل رو داشتن. در ضمن بعضی موقع ها هم read only نمیشه.
اغلب روی ویندوز 8.1 این مشکل هست ولی گاها روی ویندوز 7 هم پیش میاد.
با یوزرنیم admin.
فکر کنم هنگام اتچ پایگاه یه بلایی سرش میاد چون پایگاه رو اتوماتیک و با دستورات sql اتچ میکنم. یه برنامه نوشتم که با استفاده از sp به نام attach_db که پیش فرض در master هست و دوتا پارامتری که بهش میدم پایگاه رو اتچ میکنم.
از طرفی دیگه تو installshield هم یه اسکریپت زدم که بعد از نصب اتوماتیک sql express 2008 r2 میاد اتوماتیک پایگاه رو اتچ میکنه.
این اسکریپت هست :


use [master]
GO

CREATE DATABASE [db1] ON
( FILENAME = N'%INSTALLDIR%\Data\db1.mdf' ),
( FILENAME = N'%INSTALLDIR%\Data\db1_log.ldf' )
FOR ATTACH
GO



در هر حال من با روش ماسمالیزیشن :قهقهه: مشکلم رو حل کردم. توی پست قبلی گفتم که یه بک آپ از روی یه سیستم دیگه که read only نیست گرفتم و توی سیستم restor کردم مشکل حل شد.
حالا اومدم اون بک آپ رو توی ستاپ installshield قرار دادم که کنار برنامه کپی بشه و بعد از نصب sql وبرنامه و اتچ پایگاه ، با یه اسکریپت restore ، بک آپ رو ریستور کردم. مشکل حل شد.
اینو گفتم تا اگر کسی به این مشکلات برخورد کرد و با روش های گفته شده مشکلش حل نشد لااقل از این روش استفاده کنه.
در ضمن توی سایت مایکروسافت و دیگر سایت های انگلیسی یه سری روش ها برای مشکل (read only شدن فایل ها و فولدر ها در ویندوز 8.1) گفتن که من همه رو رفتم و فایده نداشت.
https://support.microsoft.com/en-us/kb/256614
و
http://superuser.com/questions/866120/cant-remove-read-only-attribute-from-folder-windows-8-1
و
http://superuser.com/questions/846143/remove-read-only-attribute-from-folder-windows-8-1
و...

mary70
یک شنبه 05 مهر 1394, 19:36 عصر
اینطوری که برای کاربری که خودش نرم افزار نصب کنه خیلی مشکله!
یه راهی بگیداین مشکل حل بشه135526

farzadkamali
یک شنبه 05 مهر 1394, 23:33 عصر
اینطوری که برای کاربری که خودش نرم افزار نصب کنه خیلی مشکله!
یه راهی بگیداین مشکل حل بشه135526

دوست عزیز مشکل شما این هست که دسترسی admin به فایل ندارید. به احتمال خیلی خیلی زیاد مشکلتون با تنظیم permision ها حل میشه. روی پایگاه کلیک راست کنید و طبق مطالب گفته شده در پست های قبل عمل کنید.
اما مشکل read only شدن پایگاه رو من فقط با این روش تونستم حل کنم. دوستان اگر راه بهتری دارن خوشحال میشم ارائه بدن.

pbm_soy
دوشنبه 06 مهر 1394, 01:30 صبح
بله تنظیمات انجام میشد.
فکر نمیکنم ویروس باشه چون روی چندین سیستم امتحان کردم و برخی از مشتری ها هم همین مشکل رو داشتن. در ضمن بعضی موقع ها هم read only نمیشه.
اغلب روی ویندوز 8.1 این مشکل هست ولی گاها روی ویندوز 7 هم پیش میاد.
با یوزرنیم admin.
فکر کنم هنگام اتچ پایگاه یه بلایی سرش میاد چون پایگاه رو اتوماتیک و با دستورات sql اتچ میکنم. یه برنامه نوشتم که با استفاده از sp به نام attach_db که پیش فرض در master هست و دوتا پارامتری که بهش میدم پایگاه رو اتچ میکنم.
از طرفی دیگه تو installshield هم یه اسکریپت زدم که بعد از نصب اتوماتیک sql express 2008 r2 میاد اتوماتیک پایگاه رو اتچ میکنه.
این اسکریپت هست :


use [master]
GO

CREATE DATABASE [db1] ON
( FILENAME = N'%INSTALLDIR%\Data\db1.mdf' ),
( FILENAME = N'%INSTALLDIR%\Data\db1_log.ldf' )
FOR ATTACH
GO



در هر حال من با روش ماسمالیزیشن :قهقهه: مشکلم رو حل کردم. توی پست قبلی گفتم که یه بک آپ از روی یه سیستم دیگه که read only نیست گرفتم و توی سیستم restor کردم مشکل حل شد.
حالا اومدم اون بک آپ رو توی ستاپ installshield قرار دادم که کنار برنامه کپی بشه و بعد از نصب sql وبرنامه و اتچ پایگاه ، با یه اسکریپت restore ، بک آپ رو ریستور کردم. مشکل حل شد.
اینو گفتم تا اگر کسی به این مشکلات برخورد کرد و با روش های گفته شده مشکلش حل نشد لااقل از این روش استفاده کنه.
در ضمن توی سایت مایکروسافت و دیگر سایت های انگلیسی یه سری روش ها برای مشکل (read only شدن فایل ها و فولدر ها در ویندوز 8.1) گفتن که من همه رو رفتم و فایده نداشت.
https://support.microsoft.com/en-us/kb/256614
و
http://superuser.com/questions/866120/cant-remove-read-only-attribute-from-folder-windows-8-1
و
http://superuser.com/questions/846143/remove-read-only-attribute-from-folder-windows-8-1
و...

دوست عزیز شما در پست دوم یا سوم نوشتید که با کپی کردن دیتابیس در درایو d: مشکل حل شد!
البته این موضوع منطقی است چون درایوهای دیگر غیر از c: همگی آزادی بیشتری دارند نسبت به c:
و در این پست هم گفتید که مشکل پابرجاست و readonly شدن بخاطر کارهایی است که در sql server انجام میدهید!
برای همین بهتر بود سرچتون را براساس readonly شدن دیتابیس توسط sql server انجام میدادید!

خوب در هرصورت میتوانید properties دیتابیس را بیاورید با کلیک راست کردن بروی آن و سپس از بخش options گزینه database readonly را به false ست کنید و ذخیره کنید

pbm_soy
دوشنبه 06 مهر 1394, 01:42 صبح
برای اطلاعات بیشتر بد نیست لینکهای زبر را مطالعه کنید

http://stackoverflow.com/questions/6054997/database-attached-is-read-only

http://stackoverflow.com/questions/6054997/database-attached-is-read-only

http://blog.sqlauthority.com/2011/04/16/sql-server-making-database-to-read-only-changing-database-to-readwrite/

mary70
دوشنبه 06 مهر 1394, 08:10 صبح
دیتابیسم اصلا read only نیست وحتی اجازه copy و paste در درایو های دیگه ندارم در sql جایی نیست که از administrator اجازه باز کردن و کپی وپیست برا فایلmdf. بگیرم ؟؟

farzadkamali
دوشنبه 06 مهر 1394, 09:52 صبح
دوست عزیز شما در پست دوم یا سوم نوشتید که با کپی کردن دیتابیس در درایو d: مشکل حل شد!
البته این موضوع منطقی است چون درایوهای دیگر غیر از c: همگی آزادی بیشتری دارند نسبت به c:
و در این پست هم گفتید که مشکل پابرجاست و readonly شدن بخاطر کارهایی است که در sql server انجام میدهید!
برای همین بهتر بود سرچتون را براساس readonly شدن دیتابیس توسط sql server انجام میدادید!

خوب در هرصورت میتوانید properties دیتابیس را بیاورید با کلیک راست کردن بروی آن و سپس از بخش options گزینه database readonly را به false ست کنید و ذخیره کنید

بله دوست عزیز. بعدش گفتم که به صورت رندومه. چندین بار دیگه که تست کردم دیدم به صورت رندومه و گاهی اوقات میشه و گاهی نمیشه.
دوست عزیز من به خاطر این مشکل تمام اینترنت و صفحات انگلیسی و فارسی رو زیر و رو کردم و نتیجه نگرفتم.



و در این پست هم گفتید که مشکل پابرجاست و readonly شدن بخاطر کارهایی است که در sql server انجام میدهید!

در ضمن گفتم که احتمال میدم که این طور باشه.
دوست عزیز من تحت هیچ شرایطی نتونستم دلیل منطقی برای این مشکل پیدا کنم و اینا همه احتمالاته. همه رو گفتم شاید یکی بتونه دلیل منطقی پیدا کنه و مشکل رو حل کنه

abdullah20
دوشنبه 06 مهر 1394, 15:03 عصر
همه این کار ها باید هنگام ساخت ستاپ انجام بگیره تا اگر کاربر حتی نرم افزار را در درایو c نصب کرد دیتابیس readonly نشه

farzadkamali
دوشنبه 06 مهر 1394, 19:21 عصر
همه این کار ها باید هنگام ساخت ستاپ انجام بگیره تا اگر کاربر حتی نرم افزار را در درایو c نصب کرد دیتابیس readonly نشه

فعلا که میشه. الزامی هم نداره که پایگاه توی c باشه یانه. به صورت رندومه. بعضی مواقع پایگاه رو روی دسکتاپ یا درایو های دیگه میریزی مشکل حل مشه و بعضی مواقع نمیشه.
اگه منظورتون از ((همه این کارها)) نصب sql و اتچ پایگاه و... هست که خب همه کارها از طریق ستاپ نصب میشه دیگه.

omidaak
چهارشنبه 13 آبان 1394, 00:11 صبح
منم به این مشکل برخورد کردم. خیلی کلنجار رفتم.
تا اینکه تصمیم گرفتم فایل های دیتا بیس رو هنگام نصب نرم افزار تو پوشه AppData کپی کنم که خدارو شکر مشکل حل شد. شما هم این روش رو تست کنید ایشالا که جواب میگیرید.
آخه معمولا فایل هایی که تو پوشه Program file هست read only میشن.
C:\Users\PC-NAME\AppData\Roaming
نسخه sqlserver من sqlserver express loclaldb 2012 - 2014 بود و با advanced installer ستاپ گرفتم. فایل های دیتا بیس رو هم تو پوشه ApplicationData تو Advanced installer تنظیم کردم..

yosef_ghobadi
پنج شنبه 19 آذر 1394, 16:48 عصر
بنده با نرم افزار Advance Installer ستاپ درست می کنم و یه گزینه ای داره به اسم Run As Administrator که اگه تیکشو بزنی نرم افزار رو با یوزر ادمین اجرا میکنه و این مشکلات پیش نمیاد