vb 修改sql数据库服务器,在vb中更改sqlserver数据库结构

您所在的位置:网站首页 VB编辑数据库 vb 修改sql数据库服务器,在vb中更改sqlserver数据库结构

vb 修改sql数据库服务器,在vb中更改sqlserver数据库结构

2024-07-15 23:57:59| 来源: 网络整理| 查看: 265

笔者在开发”凉山州林业局”天然林资源保护综合管理系统中,需要为程序建立SqlServer数据库的运行环境。为了方便用户,笔者开发了这个数据库配置工具。完成在SQLServer数据库中建立设备,建立数据库,建立表格,分配权限的功能,”凉山州林业局”系统中的所有数据库配置操作都可以通过这个小工具完成。方便了数据库应用程序所需SqlServer环境的建立,根本不用启动SQLEnterpriseManager配置数据库。

—-这个小工具由VB开发,利用ADO访问数据库,实现更改数据库结构,其他语言也可以此作为参考。启动VB6.0,新建一个工程,在菜单-工程-引用里选”MicrosoftActiveXDataObjects2.0Library”,代码里需要有

dimconnAsNewADODB.Connection

定义ADO数据库对象

conn.ConnectionString=”driver={SQLServer};”&_

“server=”&ServerName&”;uid=”&UserName&”;

pwd=”&Password&”;database=”&DatabaseName&””

连接数据串

conn.open连接数据库

—-注:ServerName为服务器名;UserName为用户名;Password为用户口令;DatabaseName要登录的数据库名,可以为空。

—-核心代码如下:

一、建立数据库

—-原理:建立数据库先要初始化一个数据库设备,然后在此设备上建立数据库。所有的设备名在系统表”sysdevices”里有记录,所有的数据库名在系统表”sysdatabases”里有记录。在建立之前,最好先查询这两个系统表,看名称是否已经存在。在建立设备之前,还需要的一个物理名和空闲的设备标识号。

初始化设备语法:

DISKINITNAME=”device_name”,PHYNAME=

“physical_name”,VDEVNO=device_number,

SIZE=numberofblock

—-说明:这里,NAME是数据库设备名(一个有效的标识符),PHYNAME(数据库设备的物理名)是原始的磁盘分区UNIX或外设(vms)名,或者是操作系统的文件名。VDEVNO时数据库的设备标识号,合法值为1-255,SIZE的单位是2KB的块,例如1MB(1024KB)时SIZE值为512。

—-建立数据库语法:CREATEDATABASEdatabase_name[ONdatabase_device]

—-说明:database_name是要建的数据库名,database_device是设备名

—-要新建立一个数据库,就需要设备名,数据库名,物理名和设备号。具体步骤如下:

—-我们假设用户要新建立设备dbName,在设备dbName上建立数据库dbName。

—-1)得到设备名。dbName是用户给出的设备名;先查询系统表sysdevices,看用户给出的设备名dbName是否已经存在,如果此设备名存在,就需要更换一个设备名,因为设备名是唯一的。

sql=”select*fromsysdevices

wherename=”&dbName&””

Setrs=conn.Execute(sql)

IfNotrs.EOFThen

MsgBox”设备名””&dbName&””

已存在!”,16,”请重新输入名称”

ExitSub

EndIf

—-2)得到数据库名。dbName是用户给出的数据库名;查询系统表sysdatabases,看用户给出的数据库名dbName是否已经存在,如果此数据库存在,就需要更换一个数据库名,像设备名一样,数据库名也是唯一的

sql=”select*fromsysdatabases

wherename=”&dbName&””

Setrs=conn.Execute(sql)下面代码略

—-3)得到PHYNAME物理名。查询服务器上数据库文件的物理位置serverpath,典型的,我们可以从系统表sysdevices中查询master(这是SQLServer的主库名)数据库的位置,例如G:\MSSQL\DATA\MASTER.DAT,则我们的数据库可以建在”G:\MSSQL\DATA\”目录下。

sql=”selectname,phynamefromsysdevices”

low/16777216为设备号

Setrs=conn.Execute(sql)

然后遍历记录对象rs,当name=”master”时,取出phyname,

从而可以得到物理位置serverpath=G:\MSSQL\DATA\。

—-4)得到一个空闲的设备号vdevno。设备号合法值1~255,遍历这些号,查找出未被使用的空闲设备号,下面程序得到已有的设备号

sql=”selectdistinctlow/16777216

fromsysdevicesorderbylow/16777216″

low/16777216为设备号

—-5)建立数据库。所需的信息都准备完毕,可以建立数据库了(注:下面的””&Chr(34)&””就是一个”””双引号,这样处理后,才能满足语法要求;数据库为20M,则dbSize=512*20)

sql=”DISKINITNAME=”&Chr(34)&””

&dbName&””&Chr(34)&”,PHYSNAME=”

&Chr(34)&””&serverpath&””&dbName

&”.dat”&Chr(34)&”,VDEVNO=”&vdevno

&”,SIZE=”&dbSize&””

Setrs=conn.Execute(sql)初始化设备

sql=”CREATEDATABASE”&dbName&”

on”&dbName&”=”&dbSize&””

注:

第一个dbName是数据库名,

第二个dbName是设备名

Setrs=conn.Execute(sql)

在设备dbName上建立数据库dbName

MsgBox”数据库””&dbName&””建在服务器上

“”&serverpath&””&dbName&”.dat”,

建立成功!”,64,”成功”

二、建立表格

—-建立表格比较简单,这里用到了自动计数字段和缺省值字段类型,语法如下:

CREATETABLEtable_name

(field_namedata_type[NOTNULL|NULL],…)

—-说明:table_name为新建的表名,field_name为字段名,data_type为数据类型。

(注意下面的fileidintIDENTITY字段自动计数,

datetimeNOTNULLDEFAULT(GETDATE())字段每当入

库时有个缺省值,由数据库生成当时的时间)。

sql=”CREATETABLE”&TableName&”

(fileidintIDENTITY,filetimedatetimeNOT

NULLDEFAULT(GETDATE()),fileimageimageNULL)”

conn.Executesql建立表格

三、建立用户组用户

—-建立用户组和用户不能直接通过SQL语句完成,需要执行SQLServer的存储过程sp_addlogin,sp_addgroup,sp_adduser。我们假设新建登录账号是username1,用户名是username1,组名是group1,则步骤如下:

—-1)建立用户的登录账号

语法:sp_addloginlogin_name,password[,defdb]

其中,login_name是用户的登录名,password是用

户的口令,defdb上登录的缺省数据库名称。建立数

据库DatabaseName的登录账号:

sql=”EXECUTEsp_addlogin”&username1&”,”

&password1&”,”&DatabaseName&””

Setrs=conn.Execute(sql)

—-2)增加用户组

语法:sp_addgroupgroup_name

其中,group_name是新建组名

sql=”EXECUTEsp_addgroup”&group1&””

Setrs=conn.Execute(sql)

—-3)增加用户

语法:sp_adduserlogin_name

[,name_in_db[,grpname]]

其中,login_name用户名,name_in_db是用户在当

前数据库中的名字(这里是第一步建立的登录账号

username1),grpname是要将用户加入的那个组的组名。

在数据库DatabaseName增加用户username1:

sql=”EXECUTEsp_adduser”&username1&”,”&

username1&”,”&group1&””

注:第一个username1是用户名,第二个username1是

数据库DatabaseName的登录账号

Setrs=conn.Execute(sql)

四、分配权限

—-语法:grantpermission_listonobject_nametowho

—-其中,permission_list是所要分配的权限清单,object_name是在这个对象上的权限,who是接受授权的用户。

—-凉山州林业局”系统需要将特殊用户建立的表授权给其他用户,所以先从系统表sysobjects得到所有的用户建立表格名(type=U)

sql=”selectnamefromsysobjectswheretype=U”

Setrs=conn.Execute(sql)

—-然后从中选取所需要的表格来分配权限给其他用户。例如,这里选择将tablename3的读取权限分配给组group1。

sql=”grantselecton”&tablename3&

“to”&group1&””

conn.Executesql

—-由于这个小工具的使用,使SQLServer数据库配置变得简单、方便了。->



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭