araz_pashazadeh
شنبه 29 مرداد 1390, 17:26 عصر
با عرض سلام و خسته نباشید خدمت دوستان.
من پروسیجرای را برای ایجاد کردن یک دیتا بیس جدید که کاربر اسمش را مشخص میکنه نوشتم درست هم کار میکنه مشکلی در این مورد ندارم.
همین طور که در کد هم مشخص هستش قسمت مربوط به تراکنش ها را کامنت کردم چون وقتی این قسمت ها باز هستن دیتا بیس ایجاد نمیشه در ضمن خطای هم نمیده فقط کار نمی کنه.
من علاوه بر این که یک دیتا بیس جدید می خوام در این پروسیجر ایجاد کنم کارهای محاسباتی هم دارم و مقادیر موجود درجداول را هم تغییر می دم برای همین باید این تراکنش فعال بمونه که در صورت به وجود آمدن مشکل اطلاعات قبلی به همون صورتی که بود برگرده.
من چطوری میتونم در تکه کد زیر تراکنش ها را فعال کنم و دیتا بیس جدید را همراه محاسبات ایجاد کنم؟
لطفا دوستان من را در این مورد راهنایی کنن.
ALTER PROCEDURE [dbo].[CreateDB](
@DBName nvarchar(128))
AS
BEGIN
BEGIN TRY
--BEGIN TRANSACTION
SET @DBName=RTRIM(LTRIM(@DBName))
IF DB_ID (N''+@DBName+'') IS NOT NULL
EXECUTE('DROP DATABASE '+@DBName)
-- Get the SQL Server data path
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1);
EXECUTE ('CREATE DATABASE '+@DBName+'
ON
( NAME = '+@DBName+'_dat,
FILENAME = '''+ @data_path + @DBName+'dat.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = '+@DBName+'_log,
FILENAME = '''+ @data_path + @DBName+'log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )')
--COMMIT TRANSACTION
END TRY
BEGIN CATCH
--ROLLBACK TRANSACTION
END CATCH
END
من پروسیجرای را برای ایجاد کردن یک دیتا بیس جدید که کاربر اسمش را مشخص میکنه نوشتم درست هم کار میکنه مشکلی در این مورد ندارم.
همین طور که در کد هم مشخص هستش قسمت مربوط به تراکنش ها را کامنت کردم چون وقتی این قسمت ها باز هستن دیتا بیس ایجاد نمیشه در ضمن خطای هم نمیده فقط کار نمی کنه.
من علاوه بر این که یک دیتا بیس جدید می خوام در این پروسیجر ایجاد کنم کارهای محاسباتی هم دارم و مقادیر موجود درجداول را هم تغییر می دم برای همین باید این تراکنش فعال بمونه که در صورت به وجود آمدن مشکل اطلاعات قبلی به همون صورتی که بود برگرده.
من چطوری میتونم در تکه کد زیر تراکنش ها را فعال کنم و دیتا بیس جدید را همراه محاسبات ایجاد کنم؟
لطفا دوستان من را در این مورد راهنایی کنن.
ALTER PROCEDURE [dbo].[CreateDB](
@DBName nvarchar(128))
AS
BEGIN
BEGIN TRY
--BEGIN TRANSACTION
SET @DBName=RTRIM(LTRIM(@DBName))
IF DB_ID (N''+@DBName+'') IS NOT NULL
EXECUTE('DROP DATABASE '+@DBName)
-- Get the SQL Server data path
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1);
EXECUTE ('CREATE DATABASE '+@DBName+'
ON
( NAME = '+@DBName+'_dat,
FILENAME = '''+ @data_path + @DBName+'dat.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = '+@DBName+'_log,
FILENAME = '''+ @data_path + @DBName+'log.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )')
--COMMIT TRANSACTION
END TRY
BEGIN CATCH
--ROLLBACK TRANSACTION
END CATCH
END