PDA

View Full Version : مبتدی: مشکل در Dynamic query



سمانه علوی فر
یک شنبه 07 آذر 1389, 15:36 عصر
خواهش می کنم راهنمایی کنید مشکل این کد کجاست؟؟





ALTER procedure [dbo].[temp4]

@DbSrcName nvarchar(max),
@DbDisName nvarchar(max),
@DbPath nvarchar(max)

AS

Declare @Str varchar(500)
EXEC( 'BACKUP DATABASE ' + @DbSrcName + ' TO DISK = '''+ @DbPath + @DbSrcName + '.bak''
WITH NOFORMAT, INIT, NAME = ' + @DbSrcName + ', SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
')


چرا اجرا نمی شه؟؟

سمانه علوی فر
یک شنبه 07 آذر 1389, 15:40 عصر
وقتی که اجراش میکنم


DECLARE @return_value int

EXEC @return_value = [dbo].[temp4]
@DbSrcName = N'acc',
@DbDisName = N'accful',
@DbPath = N'c:\'

SELECT 'Return Value' = @return_value

GO



این ایراد رو میگیره :



Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'acc'.

حمیدرضاصادقیان
یک شنبه 07 آذر 1389, 15:48 عصر
سلام.
Procedure رو به این شکل تغییر بدید.



ALTER procedure [dbo].[temp4]

@DbSrcName nvarchar(200),
@DbDisName nvarchar(200),
@DbPath nvarchar(500)

AS
DEClare @str nvarchar(1000)
set @str='BACKUP DATABASE ' + @DbSrcName + ' TO DISK = '''+ @DbPath + @DbSrcName + '.bak''
WITH NOFORMAT, INIT, NAME = ''' + @DbSrcName + ''', SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM'
exec (@str)

سمانه علوی فر
دوشنبه 08 آذر 1389, 09:58 صبح
حالا اگه دو یا جند تا از این نوع spها داشته باشم چه جوری می تونم ببرمش تو یه sp
داستان اینه که می می خوام یه دیتا بیس خالی بسازم و و از یه دیتا بیس بک آپ بگیرم و در این دیتا بیس جدید ریستور کنم
میشه بگین چه جوری این کاری انجام بدم
و میشه راهنمایی کنید که از کجا می تونم بیشتر اطلاعات کسب کنم؟؟
خواهش می کنم!