PDA

View Full Version : Save Dialog



sm
جمعه 17 شهریور 1385, 13:38 عصر
باسلام
من میخوام به کاربر سیستم اجازه بدم تا از بانک اطلاعاتی سایت خود نسخه پشتیبان تهیه کنه
اولا ممنون میشم که بگین شیوه کار چطوریه ؟ عین windows Application پیاده سازی بشه خوبه ؟ یعنی دستور backup خود sql رو اجرا کنم کافیه یانه قلقی، نکته ای یا چیزی داره ؟
دوما من میخوام وقتی کاربر میخواد نسخه پشتیبان رو ذخیره کنه مسیر رو خودش بر روی دستگاه طرف کلاینت انتخاب کنه برای اینمار نیاز به یه چیزی شبیه save dialog ویندوز نیاز دارم
میشه راهنمایی کنین از چی باید استفاده کرد ؟
ممنون

nazaninam
جمعه 17 شهریور 1385, 14:27 عصر
دوست عزیز کار بسیار سادست فقط به قول شما قلق داره
در یک مقاله کامل توضیح دادم:
http://how2learnasp.net/article.aspx?code=e4a7a20c-0c4a-44ba-960e-ac05969a2f85

sm
چهارشنبه 22 شهریور 1385, 20:05 عصر
ممنون از راهنماییتون
راستش منظور من این بود که کاربر برای دادن مسیر ذخیره فایل پشتیبان مجبور نباشد مسیر را تایپ کند بلکه از پنجره save dialog استفاده کند.
یه چیزی شبیه کنترل input type="file با این تفاوت که این کنترل open dialog را نمایش می دهد و من میخواهم save dialog را به کاربر نشان دهم.
آیا راهی برای این کار وجود دارد؟
ممنون میشم اگه راهنماییم کنین

sm
چهارشنبه 29 شهریور 1385, 09:27 صبح
خواهش میکنم اگه کسی راه حلی برای انجام اینکار داره بهم بگه

fereshte22
پنج شنبه 31 خرداد 1386, 11:36 صبح
سلام
من از کدی که دوستمون nazaninam داده بودن به صورت زیر برای بک اپ گیری استفاده کردم



Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Using con As New SqlConnection(ConfigurationManager.ConnectionStrin gs("ssgshopConnectionString").ConnectionString)
Dim cmd As New SqlCommand("backup_me", con)
cmd.CommandType = CommandType.StoredProcedure
With cmd
.CommandType = CommandType.StoredProcedure
.Parameters.Add("@db_name", "ssgshop")
.Parameters.Add("@disk", TextBox1.Text)
End With
Try
con.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Finally
con.Close()
End Try
End Using
End Sub

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



RESTORE DATABASE [ssgshop] FROM DISK = N'F:\enternet\backup WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE

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

حامد مصافی
پنج شنبه 31 خرداد 1386, 18:35 عصر
....ایا این کد به مجوز خاصی احتیاج دارد؟...
مجوز ها باید متعلق به SS باشند که به طور پیشفرض این مجوز ها رو داره وگرنه نمی تونه کار کنه.


میشه دوستان راهنمایی کنند که کد بالا را دقیقا به چه صورت باید استفاده کردم.
روی یک DataAdapter با متد ExcuteNonequery اجراش کنید.




یه چیزی شبیه کنترل input type="file با این تفاوت که این کنترل open dialog را نمایش می دهد و من میخواهم save dialog را به کاربر نشان دهم.
نمیشه!!!


خواهش میکنم اگه کسی راه حلی برای انجام اینکار داره بهم بگه
SS پشتیبان رو روی فضای ذخیره سازی محلی خودش ایجاد می کنه و امکان تبدیل به استریم و
فرستادن برای کاربر (بیننده) وجود نداره.
اصولاً شما نمی تونید فایلی رو به کامپیوتر کاربر منتقل کنید (که خیلی طبیعی هست)
تنها راه موجود اینه که یک پشتیبان از DB بگیرید و اونو فشرده کنید و با دادن لینک به کاربر اجازه دانلود به اون بدید.
پنل های کنترل هاست مثل CPanel یا غیره هم از همین روش استفاده می کنند.

fereshte22
پنج شنبه 31 خرداد 1386, 20:34 عصر
دوست عزیزبابت راهنمایی کاملتون خیلی ممنون هستم.
فقط در این مورد

روی یک DataAdapter با متد ExcuteNonequery اجراش کنید.

اگه نمونه کد قرار دهید خیلی ممنون میشوم.

حامد مصافی
جمعه 01 تیر 1386, 12:13 عصر
این شی متد هایی داره که با Excute اجرا میشن.
این متد ها برای اجرای یک دستور روی دیتابیس طراحی شدند.
تفاوت متد ExcuteNonewuery با سایر اجرایی ها در اینه که این متد هیچ مقداری برگشت نمیده و برای دستوراتی مثل DELETE یا UPDATE یا هر دستوری که مقداری رو برگشت نمیده کاربرد داره.
پارامتری هم که قبول می کنه همون متن دستور مورد نظر هست.

fereshte22
شنبه 02 تیر 1386, 10:29 صبح
سلام
من از کد زیر برای restore کردن دیتابیس استفاده کردم.



Dim con As New SqlConnection("Data Source=FERESHTE-BDE62C\SQLEXPRESS;Initial Catalog=master;Integrated Security=True")
Dim cmdselect As SqlCommand
cmdselect = New System.Data.SqlClient.SqlCommand("RESTORE DATABASE [db] FROM DISK = N'F:\enternet\backup\5.bak' ", con)
Dim da As New SqlDataAdapter(cmdselect)

con.Open()
cmdselect.ExecuteNonQuery()
con.Close()


ولی خطای زیر را میدهد.
The file 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\model.mdf' cannot be overwritten. It is being used by database 'model'.
دوستان در تاپیک های قبلی گفته بودند که برای حل این مشکل باید از دیتابیس master استفاده کرد.همون طور که در کد بالا میبینید من هم همین کار را کردم ولی بازهم مشکل حل نمیشودو همین خطا را میگیرد
میتونم بپرسم مشکل چیه؟ایا درست کار کردم؟

Amir Taghavi
یک شنبه 03 تیر 1386, 07:38 صبح
شما باید تما User هایی رو که به db متصل اند Kill کنید. البته قبلش باید بهشون اطلاع بدی.

fereshte22
یک شنبه 03 تیر 1386, 09:25 صبح
شما باید تما User هایی رو که به db متصل اند Kill کنید. البته قبلش باید بهشون اطلاع بدی.
سلام
میشه بگید چه طوری باید این کار را انجام داد.؟یعنی نباید در کد بالا اتصال را با دیتابیس master برقرار کرد.؟
میشه نمونه کدش را بگذارید؟
ممنون

Amir Taghavi
دوشنبه 04 تیر 1386, 07:43 صبح
چرا! باید در master باشه. اما وقتی db in use باشه چطور میخوای db رو Restore کنی. برای Kill کردن شما می تونی از template های SQL و یا از SMO استفاده کنید. برای توضیحات بیشتر یا به قسمت SQL همین سایت و یا به Book Online مراجعه کنید.