MS SQL 7 建库以及建立用户和关联的问题(50分)

  • 主题发起人 主题发起人 lanny
  • 开始时间 开始时间
L

lanny

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何通过 SQL 脚本建立一个 Database 以及一个用户.
具体要求为:
建立一个名称为 GZDATA 的 datebase ,同时建立一个GZ的用户,密码
为:xxgs , 这个用户默认登录的 database 是 GZDATA 并且是这个数据
库的拥有者 db_owner not db_admin , 同时对这个数据库有全部的权限
这样的脚本(就是一系列的 SQL 语句)该如何写? 谢谢
 
先建立一个,然后GENERATE SQL不得了
 
通过调用SQL Server的系统存储过程可以实现。
SQL Server指南上有,还是看看书吧.
 
To CJ
如何 GENERATE SQL ?
具体点,好象只能生成 database 中的 表的代码

To churchill
我不想查 Books Online. :)

我想知道具体的方法.

 
create database
sp_adduser?
好象可以生成代码的,现在我的正版测试版MSSQL 7过期了。
 
哎!比我还懒!佩服!
 
在ENTERPRISE MANAGER中右建点GZDATA中的任意TABLE, 然后选GENERATE
SQL SCRIPTS, 选择ALL OBJECTS和SECURITIES中的全部, 点SCRIPTS或者
PREVIEW就行了.
 
To cytown: 注意看题目,我不是想生成里面数据表或对象,我要生成 Database
的代码.
我愿意再给这个问题加 50 分 .
谢谢
 
要代码吗, 这就是!
CREATE DATABASE database_name
[ON {DEFAULT | database_device} [= size]
[, database_device [= size]]...]
[LOG ON database_device [= size]
[, database_device [= size]]...]
[FOR LOAD]
下面是添加用户的代码.
sp_addlogin login_id [, password [, defdb [, deflanguage [, login_suid]]]]

 
那些具体的名字由你写了,我给你一个通用的SQL,别要食言!
1、创建Database的设备: (name设备名,physname设备文件名,
vdevno设备号,size设备大小)
DISK INIT name =<DevName> , physname =<PhysName>,
vdevno =<DevNO>, size = <DevSize>
2、创建Database的日志设备:
DISK INIT name =<LogDevName> , physname = <LogPhysName>,
vdevno = <LogDevNO> size = <LogDevSize>
3、创建Database:
CREATE DATABASE <DevName> ON <DevName>=<Size>
LOG ON <LogDevName>=<LogSize>
4、创建Database用户:
exec sp_addlogin <UserName>, <Password>,<DBName>
use <DBName>
exec sp_addalias <UserName>, 'dbo'

 
我有现有delphi程序,当然其中含有SQL,要吗?请E-mail
 
USE master
GO

CREATE DATABASE GZDATA
ON
( NAME = GZ_DATA,
FILENAME = 'c:/GZ_DATA.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'GZ_log',
FILENAME = 'c:/GZ_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO

if not exists (select * from master..syslogins where name = N'GZ')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select @logindb = N'GZDATA', @loginlang = N'us_english'
if @logindb is null or not exists (select * from master..sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master..syslanguages where name = @loginlang) and @loginlang <> N'us_english')
select @loginlang = @@language
exec sp_addlogin N'GZ', null, @logindb, @loginlang
END
GO

if not exists (select * from sysusers where name = N'GZ' and uid < 16382)
EXEC sp_grantdbaccess N'GZ', N'GZ'
GO

exec sp_addrolemember N'db_owner', N'GZ'
GO



 
我也来分点"脏",代码几乎都是抄wgzhang的,后面的有改进. :)
PS : if not exists (select * from sysusers where name = N'GZ'
and uid < 16382) 的 16382 是什么意思?

CODE :

USE master
GO

CREATE DATABASE GZDATA
ON
( NAME = GZ_DATA,
FILENAME = 'c:/GZ_DATA.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'GZ_log',
FILENAME = 'c:/GZ_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO

if not exists (select * from master..syslogins where name = N'GZ')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132)
select @logindb = N'GZDATA', @loginlang = N'us_english'
if @logindb is null or not exists (select * from master..sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from master..syslanguages where name = @loginlang) and @loginlang <> N'us_english')
select @loginlang = @@language
-- exec sp_addlogin N'GZ', null, @logindb, @loginlang
exec sp_addlogin N'GZ', N'xxgs', @logindb, @loginlang
END
GO

if not exists (select * from sysusers where name = N'GZ' and uid < 16382)
USE GZDATA
EXEC sp_grantdbaccess N'GZ', N'GZ'
GO

USE GZDATA
exec sp_addrolemember N'db_owner', N'GZ'
GO

use master
exec sp_dboption N'GZDATA', N'trunc. log', N'true'
exec sp_dboption N'GZDATA', N'bulkcopy', N'true'
exec sp_dboption N'GZDATA', N'auto create statistics', N'true'
exec sp_dboption N'GZDATA', N'auto update statistics', N'true'
exec sp_dboption N'GZDATA', N'autoshrink', N'true'
GO

use GZDATA
exec sp_dbcmptlevel N'GZDATA'
GO

use GZDATA
GRANT CREATE TABLE , CREATE VIEW , CREATE PROCEDURE ,
DUMP DATABASE , CREATE DEFAULT , DUMP TRANSACTION ,
CREATE RULE TO [GZ]
 
感谢各位,好不容易上来了.
我实验了一下,只有 Question 能达到我需要的效果.
所以给 Question 60 分,wgzhang 40 分.
Question 我在开个问题,你来拿剩下的 50 分.
 
多人接受答案了。
 
后退
顶部