PDA

View Full Version : سوال: تبدیل کردن کد Restore از محیط #C به Stored Procedure



veniz2008
پنج شنبه 08 تیر 1391, 16:34 عصر
سلام دوستان،من براساس کد زیر داخل محیط سی شارپ عمل Restore رو بدرستی انجام میدم،حالا میخوام این کد رو به stored procedure تبدیل کنم،در واقع آدرس فایل بک آپ رو بهش بدم و عمل restore انجام بشه:
کد نوشته شده در محیط #C :

ALTER DATABASE tel SET SINGLE_USER with ROLLBACK IMMEDIATE Use master
RESTORE DATABASE tel FROM DISK='" + txtselectbackup.Text + "' WITH REPLACE


خودم سعی کردم که sp رو بسازم ولی خطای زیر رو میده:
88891

veniz2008
پنج شنبه 08 تیر 1391, 21:09 عصر
واقعا کسی نیست که با sp کد restore رو نوشته باشه؟

samadblaj
پنج شنبه 08 تیر 1391, 21:37 عصر
سلام روز بخیر من با این درست میکنم:

ALTER PROCEDURE BackupDatabase
(
@databaseName sysname,
@backupPath varchar(300)
)
AS
BEGIN
BACKUP DATABASE @databaseName
TO DISK = @backupPath
WITH FORMAT;
END
return

توی کد بالا متغیر برای مسیر و آدرس دهی ، حواست باشه ALTER رو به CREATE تغییر بدی.

var db = new demoDataContext();
db.BackupDatabase(@"مسیر \my.mdf", @"c:\ss.bak");

موفق باشی

veniz2008
جمعه 09 تیر 1391, 11:47 صبح
ببینید دوستان من میخوام Restore انجام بدم نه بک آپ، من sp مربوط به Restore رو نیاز دارم.

samadblaj
جمعه 09 تیر 1391, 12:06 عصر
سلام یکی نوشتم قسمتیش خطا میده با این ور برو تا حالا تونستم باگش رو بگیرم:


DECLARE @return_value int

EXEC @return_value = [dbo].[BackupDatabase]
@databaseName = samad,
@backupPath = N'c:\samad.bak'

SELECT 'Return Value' = @return_value

veniz2008
جمعه 09 تیر 1391, 12:25 عصر
یعنی کسی sp مربوط به restore رو نداره؟؟؟؟؟؟؟؟؟؟؟:گریه::گری ::گریه:

samadblaj
جمعه 09 تیر 1391, 12:49 عصر
تو رو خدا گریه نکن ، این که چیزی نیست درست میشه امیدوار باش.

پایگاه داده ات چیه؟

samadblaj
جمعه 09 تیر 1391, 14:58 عصر
دوست عزیز به جایی نرسیدم لطفا اگه خودت تونستی واسه منم کدش رو بزار.

اینجا (http://www.mssqltips.com/sqlservertip/1849/backup-and-restore-sql-server-databases-programmatically-with-smo/) واینجا (http://www.codeproject.com/Articles/123441/SQL-Server-2008-Backup-and-Restore-Databases-using)و اینجا (http://stackoverflow.com/questions/9403299/backup-and-restore-sql-database)و اینجا (http://www.codeproject.com/Articles/26390/SQL-Server-2005-Database-Backup-and-Restore-using):متفکر:

به نظر من توی sql یه job درست کن و با کد زیر ازش backup بگیر :متفکر:


BACKUP DATABASE samad TO DISK = 'C:\Northwind_Full.bak' WITH DIFFERENTIAL
GO


و برای restore هم از این کد :

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\Temp\DatabaseBackups\AdventureWorks_Diff_2.bak ' WITH RECOVERY
GO

یا با این کد میتونید از کل دیتابیس هات back up بگیری به غیر از چند دیتا بیس اصلی master','model','msdb','tempdb


DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name

SET @path = 'C:\'
SET @name = 'samaddddd'
SET @fileName = 'samaddddd'
SET @fileDate = 'samaddddd'


SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName

FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor


بعد توی برنامه به متغیر ها مقدار مسیر و نام و از این قبیل رو برای کاربر مشخص کنی.

ولی منم دنباله restore از طریق stored prosedure هستم. :چشمک: هر جور شده پیداش میکنم !

موفق باشی.