PDA

View Full Version : مبتدی: مشکل در تعریف پارامتر



سمانه علوی فر
شنبه 06 آذر 1389, 10:50 صبح
در تعریف پارامتر دچار مشکل شده ام




create procedure [dbo].[CreateEmptyDB]

@DbName nvarchar(max),
@DbPath nvarchar(max)

as
CREATE DATABASE @DbName ON PRIMARY
( NAME = @DbName, FILENAME =@DbPath + @dbname + '.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = @DbName, FILENAME = @DbPath + @dbname + '.ldf', SIZE = 1024KB , FILEGROWTH = 10%)



مشکل این تعریف پارامتر چیست؟

sam166
شنبه 06 آذر 1389, 10:53 صبح
پرانتز یادت رفته
بعد از نام پروسیجر یدونه " ) " پرانتز باز و بعد از پارامتر هات و قبل از As یه دونه " ( " پرانتز بسته بزار

سمانه علوی فر
شنبه 06 آذر 1389, 10:58 صبح
پرانتز یادت رفته
بعد از نام پروسیجر یدونه " ) " پرانتز باز و بعد از پارامتر هات و قبل از As یه دونه " ( " پرانتز بسته بزار



مشکلش این نیست
رو این خط ایراد می گیره



CREATE DATABASE @DbName ON PRIMARY

sam166
شنبه 06 آذر 1389, 11:01 صبح
create procedure [dbo].[CreateEmptyDB](

@DbName nvarchar(max),
@DbPath nvarchar(max)
)
as
CREATE DATABASE @DbName ON PRIMARY
( NAME = @DbName, FILENAME =@DbPath + @dbname + '.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = @DbName, FILENAME = @DbPath + @dbname + '.ldf', SIZE = 1024KB , FILEGROWTH = 10%)

سمانه علوی فر
شنبه 06 آذر 1389, 11:05 صبح
create procedure [dbo].[CreateEmptyDB](

@DbName nvarchar(max),
@DbPath nvarchar(max)
)
as
CREATE DATABASE @DbName ON PRIMARY
( NAME = @DbName, FILENAME =@DbPath + @dbname + '.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = @DbName, FILENAME = @DbPath + @dbname + '.ldf', SIZE = 1024KB , FILEGROWTH = 10%)



مهندس این قسمت ایراد می گیره


CREATE DATABASE @DbName ON PRIMARY

Reza_Yarahmadi
شنبه 06 آذر 1389, 11:09 صبح
شما به اين صورت نميتونيد با استفاده از پارامتر ديتابيس درست كنيد. بايد از Dynamic Query استفاده كنيد.
create procedure [dbo].[CreateEmptyDB]

@DbName nvarchar(max),
@DbPath nvarchar(max)

as
Declare @Str varchar(Max)
Set @Str = 'CREATE DATABASE ' + @DbName + ' ON PRIMARY
( NAME = ' + @DbName + ', FILENAME =' + @DbPath + @DbName + ' + .mdf , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = ' + @DbName + ', FILENAME = ' + @DbPath + @DbName + ' + .ldf, SIZE = 1024KB , FILEGROWTH = 10%)'

Exec Sp_executesql @Str
البته DbPath + @DbName@ نميدونم آدرس درستي رو ميسازه يا نه.

سمانه علوی فر
شنبه 06 آذر 1389, 11:27 صبح
use acc
exec [dbo].[CreateEmptyDB2] [('acc90') , ('c:\')]



استاد وقتی می خوام اجراش کنم یه ایراد می گیره بدین مضمون:




Msg 201, Level 16, State 4, Procedure CreateEmptyDB2, Line 0
Procedure or function 'CreateEmptyDB2' expects parameter '@DbPath', which was not supplied.

Reza_Yarahmadi
شنبه 06 آذر 1389, 12:06 عصر
SP رو بصورت زير بنويسيد
CREATE procedure [dbo].[CreateEmptyDB]
@DbName nvarchar(max),
@DbPath nvarchar(max)
AS

Declare @Str varchar(500)
EXEC( 'CREATE DATABASE ' + @DbName + '
ON
( NAME = ' + @DbName + ',
FILENAME = '''+ @DbPath + @DbName + '.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = ' + @DbName + '_Log,
FILENAME = '''+ @DbPath + @DbName + '_Log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )')

بصورت زير هم اونو صدا بزنيد
EXEC CreateEmptyDB 'acc90','C:\'