View Full Version : حرفه ای: ساخت دیتا بیس از طریق stored procedure
  
سمانه علوی فر
سه شنبه 20 مهر 1389, 15:14 عصر
با سلام
می خوام بدونم ایا میشه یک دیتا بیس رو از طریق sp ساخت یا نه
اون چه که باهاش روبرو شدم اینه که مشکلی داره تحت عنوان پرمیشن
لازم به ذکر است ورژن برنامه sql server 2008 هست
با همچین ایرادی
:
Msg 5011, Level 14, State 5, Line 1
User does not have permission to alter database 'acc', the database does not exist, or the database is not in a state that allows access checks.
tooraj_azizi_1035
سه شنبه 20 مهر 1389, 15:52 عصر
با سلام
 
می خوام بدونم ایا میشه یک دیتا بیس رو از طریق sp ساخت یا نه
اون چه که باهاش روبرو شدم اینه که مشکلی داره تحت عنوان پرمیشن
 
لازم به ذکر است ورژن برنامه sql server 2008 هست
 
با همچین ایرادی
:
Msg 5011, Level 14, State 5, Line 1
User does not have permission to alter database 'acc', the database does not exist, or the database is not in a state that allows access checks.
 
سلام،
برای اینکه SP شما قابل اجرا باشه باید با کاربری که مجوز انجام عملیات روی شیء خاصی رو داره وارد عمل بشید برای این کار از این الگو استفاده کن:
CREATE PROCEDURE dbo.نام SP
WITH EXECUTE AS 'نام کاربر مجاز'
و سپس بقیه دستورات.
این هم یه لینک برای اطلاعات بیشتر:
http://msdn.microsoft.com/en-us/library/ms188354.aspx
امیدوارم مفید واقع بشه. :قلب:
سمانه علوی فر
سه شنبه 20 مهر 1389, 16:28 عصر
با تشکر از شما مشکلم هنوز نشده
فایل کویری رو ضمیمه می کنم تا مشاهده بفرمایید
مرسی که توجه می کنید
AminSobati
سه شنبه 20 مهر 1389, 21:40 عصر
سلام دوست عزیزم،
لاگینی که قصد داره دیتابیس ایجاد کنه عضو کدوم Role سرور هست؟
سمانه علوی فر
چهارشنبه 21 مهر 1389, 10:26 صبح
سلام دوست عزیزم،
لاگینی که قصد داره دیتابیس ایجاد کنه عضو کدوم Role سرور هست؟
می دونم که باید جزء sysadmin باشه. ولی چه طوری و کجا باید این رو ست کنم؟
AminSobati
چهارشنبه 21 مهر 1389, 11:03 صبح
عضو dbcreator هم باشه کفایت میکنه. از لاگین Properties بگیرین (در Security) قسمت Roleها در دسترس خواهد بود
سمانه علوی فر
چهارشنبه 21 مهر 1389, 11:25 صبح
عضو dbcreator هم باشه کفایت میکنه. از لاگین Properties بگیرین (در Security) قسمت Roleها در دسترس خواهد بود
CREATE PROCEDURE dbo.StoredProcedure2
WITH EXECUTE AS owner
	/*
	(
	@parameter1 int = 5,
	@parameter2 datatype OUTPUT
	)
	*/
AS
	/* SET NOCOUNT ON */
	CREATE DATABASE [acc_89] ON  PRIMARY 
( NAME = N'acc_89', FILENAME = N'F:\Data\acc_89.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'acc_89_log', FILENAME = N'F:\acc_89_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO
ALTER DATABASE [acc_89] SET COMPATIBILITY_LEVEL = 100
GO
ALTER DATABASE [acc_89] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [acc_89] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [acc_89] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [acc_89] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [acc_89] SET ARITHABORT OFF 
GO
ALTER DATABASE [acc_89] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [acc_89] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [acc_89] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [acc_89] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [acc_89] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [acc_89] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [acc_89] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [acc_89] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [acc_89] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [acc_89] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [acc_89] SET  DISABLE_BROKER 
GO
ALTER DATABASE [acc_89] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [acc_89] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [acc_89] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [acc_89] SET  READ_WRITE 
GO
ALTER DATABASE [acc_89] SET RECOVERY FULL 
GO
ALTER DATABASE [acc_89] SET  MULTI_USER 
GO
ALTER DATABASE [acc_89] SET PAGE_VERIFY CHECKSUM  
GO
USE [acc_89]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [acc_89] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
این کد اصلا درسته؟
از قسمت CREATE DATABASE به بعد کاملا در یک کویری جداگانه درست کار می کنه ولی وقتی میاد تو پروسیجر مشکل دار میشه
لاگین رو چک کردم
و بهش سطح دسترسی dbcreator  هم دادم ولی تفاوتی نکرد و همچنان اشکال داره
حمیدرضاصادقیان
چهارشنبه 28 مهر 1389, 16:35 عصر
سلام. اینم کد اصلاح شده.
alter PROCEDURE dbo.StoredProcedure2
AS
	CREATE DATABASE [acc_89] ON  PRIMARY 
( NAME = N'acc_89', FILENAME = N'c:\acc_89.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'acc_89_log', FILENAME = N'c:\acc_89_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
ALTER DATABASE [acc_89] SET COMPATIBILITY_LEVEL = 100
ALTER DATABASE [acc_89] SET ANSI_NULL_DEFAULT OFF 
ALTER DATABASE [acc_89] SET ANSI_NULLS OFF 
ALTER DATABASE [acc_89] SET ANSI_PADDING OFF 
ALTER DATABASE [acc_89] SET ANSI_WARNINGS OFF 
ALTER DATABASE [acc_89] SET ARITHABORT OFF 
ALTER DATABASE [acc_89] SET AUTO_CLOSE OFF 
ALTER DATABASE [acc_89] SET AUTO_CREATE_STATISTICS ON 
ALTER DATABASE [acc_89] SET AUTO_SHRINK OFF 
ALTER DATABASE [acc_89] SET AUTO_UPDATE_STATISTICS ON 
ALTER DATABASE [acc_89] SET CURSOR_CLOSE_ON_COMMIT OFF 
ALTER DATABASE [acc_89] SET CURSOR_DEFAULT  GLOBAL 
ALTER DATABASE [acc_89] SET CONCAT_NULL_YIELDS_NULL OFF 
ALTER DATABASE [acc_89] SET NUMERIC_ROUNDABORT OFF 
ALTER DATABASE [acc_89] SET QUOTED_IDENTIFIER OFF 
ALTER DATABASE [acc_89] SET RECURSIVE_TRIGGERS OFF 
ALTER DATABASE [acc_89] SET  DISABLE_BROKER 
ALTER DATABASE [acc_89] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
ALTER DATABASE [acc_89] SET DATE_CORRELATION_OPTIMIZATION OFF 
ALTER DATABASE [acc_89] SET PARAMETERIZATION SIMPLE 
ALTER DATABASE [acc_89] SET  READ_WRITE 
ALTER DATABASE [acc_89] SET RECOVERY FULL 
ALTER DATABASE [acc_89] SET  MULTI_USER 
ALTER DATABASE [acc_89] SET PAGE_VERIFY CHECKSUM  
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [acc_89] MODIFY FILEGROUP [PRIMARY] DEFAULT
Go
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.