مشکل با VS2005 در موقع بکاپ گرفتن از دیتابیس
سلام
من در C# کدی برای بکاپ گرفتن از دیتا بیس نوشتم که ایراد می گیره کد رو در SQL SERVER چک کردم درست بود فکر می کنم مشکل از VS است. لطفا کمک کنید
در ضمن جستجو کردم و لی جوابی نگرفتم
کد در C#
SqlConnection connection = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=club;Data Source=.\SQLEXPRESS");
connection.Open();
SqlCommand backup = new SqlCommand("BACKUP DATABASE club TO DISK = N'c:\\vb.bak'", connection);
backup.ExecuteNonQuery();
متن خطا
Cannot open backup device 'c:\vb.bk'. Operating system error 5(Access is denied.).
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن
شما بدون ايجاد device پشتيبان تهيه كرديد.به همين خاطرهم بهتون خطا مي ده
ابتدا با دستور sp_addumpdevice يك دستگاه پشتيبان در مسير دلخواه ايجاد كنيد و بعد با دستور
backup database و دستگاه پشتيبان ايجاد شده نسخه پشتيبان را تهيه كنيد
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن
نقل قول:
نوشته شده توسط
iranrose63
شما بدون ايجاد device پشتيبان تهيه كرديد.به همين خاطرهم بهتون خطا مي ده
ابتدا با دستور sp_addumpdevice يك دستگاه پشتيبان در مسير دلخواه ايجاد كنيد و بعد با دستور
backup database و دستگاه پشتيبان ايجاد شده نسخه پشتيبان را تهيه كنيد
میشه بیشتر توضیح بدین
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن
با سلام،
در هنگام Backup و Restore شما به بانك مورد نظر متصل هستيد.
معمولاً پس از Backup در آينده مي خواهيد از آن استفاده كنيد و Restore نماييد...
شايد بشود روش شما را اصلاح كرد ولي اگر بخواهيد به همان صورتي كه Backup گرفته ايد Restore نماييد ، به هيچ عنوان موفق نخواهيد شد.
زيرا ديتابيسي كه در حال استفاده است و اتصال شما به SQLServer از طريق آن است اجازه نمي دهد آنرا Restore نماييد. (حداقل در همه حالات جواب نمي دهد؛ و يك برنامه نويس بايد تمام حالت ها را در نظر بگيرد.)
شما مي توانيد براي اين كار ديتابيس در حال استفاده را از ديتابيس خود به "master" تغيير دهيد و پس از اتمام Backup و يا Restore به حالت اول بازگردانيد.
ولي من براي اين كار (چون خودم يك دور سر همين پدرم درآمده) يك Script نوشته ام كه ميتوانيد در برنامه خود به صورت Script فراخواني كنيد و يا آنرا به صورت Stored Procedure درآوريد. (كه بهتر است و راحت تر است)
اسكريپت Backup كه يك Stored Procedure براي Backup مي سازد.
USE [نام ديتابيس]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[BackupDB]
@BackupPath varchar(max)
AS
backup database [نام ديتابيس] to disk =@BackupPath with INIT, SKIP, NOUNLOAD, STATS = 10
RETURN
و
اسكريپت Restore كه يك Stored Procedure براي Restore مي سازد.
use [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RestoreDB]
@BackupPath varchar(max)
AS
RESTORE DATABASE [نام ديتابيس]
FROM DISK = " + "'" + RestorePath + "'" + " WITH RECOVERY, REPLACE
RETURN
در صورت هرگونه سوال در خدمتم.
موفق باشيد.
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن
سلام،
به تاپيك زير هم نگاهي بياندازيد.
http://www.barnamenevis.org/sh...d.php?t=120434
موفق باشيد.
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن
نقل قول:
نوشته شده توسط
saied_genius
با سلام،
در هنگام Backup و Restore شما به بانك مورد نظر متصل هستيد.
معمولاً پس از Backup در آينده مي خواهيد از آن استفاده كنيد و Restore نماييد...
شايد بشود روش شما را اصلاح كرد ولي اگر بخواهيد به همان صورتي كه Backup گرفته ايد Restore نماييد ، به هيچ عنوان موفق نخواهيد شد.
زيرا ديتابيسي كه در حال استفاده است و اتصال شما به SQLServer از طريق آن است اجازه نمي دهد آنرا Restore نماييد. (حداقل در همه حالات جواب نمي دهد؛ و يك برنامه نويس بايد تمام حالت ها را در نظر بگيرد.)
شما مي توانيد براي اين كار ديتابيس در حال استفاده را از ديتابيس خود به "master" تغيير دهيد و پس از اتمام Backup و يا Restore به حالت اول بازگردانيد.
ولي من براي اين كار (چون خودم يك دور سر همين پدرم درآمده) يك Script نوشته ام كه ميتوانيد در برنامه خود به صورت Script فراخواني كنيد و يا آنرا به صورت Stored Procedure درآوريد. (كه بهتر است و راحت تر است)
اسكريپت Backup كه يك Stored Procedure براي Backup مي سازد.
USE [نام ديتابيس]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[BackupDB]
@BackupPath varchar(max)
AS
backup database [نام ديتابيس] to disk =@BackupPath with INIT, SKIP, NOUNLOAD, STATS = 10
RETURN
و
اسكريپت Restore كه يك Stored Procedure براي Restore مي سازد.
use [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RestoreDB]
@BackupPath varchar(max)
AS
RESTORE DATABASE [نام ديتابيس]
FROM DISK = " + "'" + RestorePath + "'" + " WITH RECOVERY, REPLACE
RETURN
در صورت هرگونه سوال در خدمتم.
موفق باشيد.
با سلام
دوست عزیز با تشکر از شما انگار SCRIPT مربوط به بازیابی ایراد دارد برای BACKUP جواب می دهد ولی برای RESTORE در خود SQL ایراد می گیرد
با تشکر
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن از دیتابیس
سلام
حق با شماست.
اينجوري تغييرش بدهيد.
use [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RestoreDB]
@restorePath varchar(max)
AS
RESTORE DATABASE [db] FROM DISK =@RestorePath WITH RECOVERY, REPLACE
RETURN
يا اينکه اينجوري بنويسيد
use [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[RestoreDB]
@restorePath varchar(max)
AS
SET SINGLE_USER With ROLLBACK IMMEDIATE
RESTORE DATABASE [ديتابيس] FROM DISK =@RestorePath WITH RECOVERY, REPLACE
RETURN
موفق باشيد.
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن از دیتابیس
با سلام و تشکر از شما دوست عزیز باید بگم من از sql2005 استفاده می کنم و با with این ایراد رو می گیره
Msg 156, Level 15, State 1, Procedure RestoreDB, Line 7
Incorrect syntax near the keyword 'With'.
Msg 319, Level 15, State 1, Procedure RestoreDB, Line 7
Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.
Msg 102, Level 15, State 1, Procedure RestoreDB, Line 7
Incorrect syntax near 'IMMEDIATE'.
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن از دیتابیس
بازهم معذرت مي خواهم.
اين را امتحان کنيد.
من امتحان کردم مشکلي نداشت.
CREATE PROCEDURE [dbo].[RestoreDB]
@restorePath varchar(max)
AS
ALTER DATABASE [نام ديتابيس]
SET SINGLE_USER With ROLLBACK IMMEDIATE
RESTORE DATABASE [نام ديتابيس] FROM DISK =@RestorePath WITH RECOVERY, REPLACE
RETURN
موفق باشيد.
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن از دیتابیس
با تشکراز شما دوست عزیز کد درست بود
موفق باشی
نقل قول: مشکل با VS2005 در موقع بکاپ گرفتن از دیتابیس
خواهش مي کنم.
در خدمتتان هستم.
موفق باشيد.