PDA

View Full Version : Create DataBase توسط کدهای SQL در دلفی



Mohammad S
شنبه 23 خرداد 1383, 03:40 صبح
سلام دوستان عزیز
من قبلا این سوال را پرسیدم اما کسی به من جواب نداد مجددا می پرسم.
دستوراتی مثل Create DataBase, Create Table , .... کجا باید نوشته شوند تا توسط دلفی بتوان آنها را برای SQL Server اجرا کرد. من دستورات زیر را که توسط Generate SQL Script خود SQL Server ساخته شده در یک SQLQuery از تب dbExpress نوشتم و با دستور

SQLQuery1.ExecSQL(True)
آن را اجرا کردم ولی با پیغام زیر مواجه می شوم: البته ناگفته نماند که به دیتابیس Master لوگین کردم.
===============================
کدهای مورد نظر:

IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'Test')
DROP DATABASE [Test]
CREATE DATABASE [Test] ON (NAME = N'Test_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\80\Tools\data\Test_Data.MDF' , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N'Test_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\80\Tools\data\Test_Log.LDF' , SIZE = 1, FILEGROWTH = 10%)
COLLATE Arabic_CI_AS
exec sp_dboption N'Test', N'autoclose', N'true'
exec sp_dboption N'Test', N'bulkcopy', N'false'
exec sp_dboption N'Test', N'trunc. log', N'true'
exec sp_dboption N'Test', N'torn page detection', N'true'
exec sp_dboption N'Test', N'read only', N'false'
exec sp_dboption N'Test', N'dbo use', N'false'
exec sp_dboption N'Test', N'single', N'false'
exec sp_dboption N'Test', N'autoshrink', N'true'
exec sp_dboption N'Test', N'ANSI null default', N'false'
exec sp_dboption N'Test', N'recursive triggers', N'false'
exec sp_dboption N'Test', N'ANSI nulls', N'false'
exec sp_dboption N'Test', N'concat null yields null', N'false'
exec sp_dboption N'Test', N'cursor close on commit', N'false'
exec sp_dboption N'Test', N'default to local cursor', N'false'
exec sp_dboption N'Test', N'quoted identifier', N'false'
exec sp_dboption N'Test', N'ANSI warnings', N'false'
exec sp_dboption N'Test', N'auto create statistics', N'true'
exec sp_dboption N'Test', N'auto update statistics', N'true'
use [Test]
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_name]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[tb_name]
if not exists (select * from master.dbo.syslogins where loginname = N'etmam')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select @logindb = N'hometools', @loginlang = N'us_english'
if @logindb is null or not exists (select * from master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master.dbo.syslanguages where name = @loginlang) and @loginlang <> N'us_english')
select @loginlang = @@language
exec sp_addlogin N'etmam', null, @logindb, @loginlang
END
exec sp_addsrvrolemember N'etmam', sysadmin
exec sp_addsrvrolemember N'etmam', securityadmin
exec sp_addsrvrolemember N'etmam', serveradmin
exec sp_addsrvrolemember N'etmam', setupadmin
exec sp_addsrvrolemember N'etmam', processadmin
exec sp_addsrvrolemember N'etmam', diskadmin
exec sp_addsrvrolemember N'etmam', dbcreator
exec sp_addsrvrolemember N'etmam', bulkadmin
if not exists (select * from dbo.sysusers where name = N'etmam' and uid < 16382)
EXEC sp_grantdbaccess N'etmam', N'etmam'
exec sp_addrolemember N'db_owner', N'etmam'
CREATE TABLE [dbo].[tb_name] (
[ID] [int] NOT NULL ,
[Family] [nvarchar] (30) COLLATE Arabic_CI_AS NOT NULL ,
[Name] [nvarchar] (30) COLLATE Arabic_CI_AS NULL
) ON [PRIMARY]
ALTER TABLE [dbo].[tb_name] WITH NOCHECK ADD
CONSTRAINT [PK_tb_name] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
:roll:
وقتی هم می خواهم Active آن را True کنم با خطای زیر مواجه می شوم:

JavanSoft
شنبه 23 خرداد 1383, 14:27 عصر
با یک مسیر کوتاهتر امتحان کنید مثلا C:\Testو مطمئن شوید که مجوز نوشتن روی درایو C در Server را دارید

Mohammad S
یک شنبه 24 خرداد 1383, 13:16 عصر
با یک مسیر کوتاهتر امتحان کنید مثلا C:\Testو مطمئن شوید که مجوز نوشتن روی درایو C در Server را دارید
فعلا که سروری در کار نیست و روی کامپیوتر خودم این مشکل را دارم. ضمنا چون من این کد ها را با خود SQL ساخته ام چندان قادر به تغییر آن نیستم. اگر ممکن است شما بخشی که باید تغییر کند را نشان دهید و کد تغییر لطفا :oops:

Mohammad S
یک شنبه 31 خرداد 1383, 19:24 عصر
آقا کسی نیست جواب ما را بده؟! :roll:
یعنی این همه آدمی که اینجا هستند و برنامه نویسی می کنند و خدای SQL Server هستند تا حالا احتیاج به BackUp یا Restore یا Attach DataBase , Create DataBase و ... پیدا نکردند و یا شاید هم به استفاده کننده یاد دادن که از طریق محیط Interprise Manager خودش این کار را انجام دهد؟ :?