SQLSERVER

2024-10-20

SQLSERVER(共10篇)

SQLSERVER 篇1

数据库是电子商务、金融以及ERP系统的基础, 通常都保存着重要的商业伙伴和客户信息。大多数企业、组织以及政府部门的电子数据都保存在各种数据库中。数据库服务器还掌握着敏感的金融数据。数据完整性和合法存取会受到很多方面的安全威胁, 包括密码策略、系统后门、数据库操作以及本身的安全方案。但是数据库通常没有像操作系统和网络这样在安全性上受到重视。信息技术的发展离不开数据库技术的不断发展, 数据库的规模越大, 其功能也越强大, SQLServer2000是运行在Microsoft Windows上的一个高性能数据库管理系统, 其作为一种占有极大市场份额的数据库系统, 它的安全体系具有较大的代表性。其安全性也更重要, 本文就是对SQLServer2000进行一些安全性研究, 希望能引起对其安全性的重视。

1 SQLServer2000安全性建立在控制服务器登录帐号和密码的基础上

1.1 使用安全的登录账号

由于sqlserver不能更改sa用户名称, 也不能删除这个超级用户, 所以, 我们必须对这个账号进行最强的保护, 当然, 包括使用一个非常强壮的密码, 最好不要在数据库应用中使用sa账号, 只有当没有其他方法登录到SQLServer实例时才使用sa。建议数据库管理员新建立个拥有与sa一样权限的超级用户来管理数据库。安全的账号策略还包括不要让管理员权限的账号泛滥。sqlserver的认证模式有Windows身份认证和混合身份认证两种。如果数据库管理员不希望操作系统管理员来通过操作系统登录来接触数据库的话, 可以在账号管理中把系统账号删除。很多主机使用数据库应用只是用来做查询、修改等简单功能的, 请根据实际需要分配账号, 并赋予仅仅能够满足应用要求和需要的权限。

1.2 使用安全的登录密码

我们把密码策略摆在所有安全配置的第一步, 请注意, 很多数据库账号的密码过于简单, 这跟系统密码过于简单是一个道理。对于sa更应该注意, 同时不要让sa账号的密码写于应用程序或者脚本中。健壮的密码是安全的第一步, 建议密码含有多种数字字母组合并9位以上。sqlserver2000安装的时候, 如果是使用混合模式, 那么就需要输入sa的密码, 除非您确认必须使用空密码, 这比以前的版本有所改进。同时养成定期修改密码的好习惯, 数据库管理员应该定期查看是否有不符合密码要求的账号。

2 重视SQLServer2000数据库的日志和存储使用中的安全

2.1 加强数据库日志的记录

审核数据库登录事件的“失败和成功”, 在实例属性中选择“安全性”, 将其中的审核级别选定为全部, 这样在数据库系统和操作系统日志里面, 就详细记录了所有账号的登录事件。请定期查看sqlserver日志检查是否有可疑的登录事件发生, 或者使用DOS命令。

2.2 管理扩展存储过程

对存储过程进行大手术, 并且对账号调用扩展存储过程的权限要慎重。其实在多数应用中根本用不到多少系统的存储过程, 而sql s e rve r的这么多系统存储过程只是用来适应广大用户需求的, 所以请删除不必要的存储过程, 因为有些系统的存储过程能很容易地被人利用起来提升权限或进行破坏。如果您不需要扩展存储过程Xp_cmdshell请把它去掉。

2.3 使用协议加密

s qls e rve r2000使用的Tabular Data Stre am协议来进行网络数据交换, 如果不加密的话, 所有的网络传输都是明文的, 包括密码、数据库内容等, 这是一个很大的安全威胁。能被人在网络中截获到他们需要的东西, 包括数据库账号和密码。所以, 在条件容许情况下, 最好使用SSL来加密协议。

3 SQLServer2000数据库中端口配置的安全注意事项

数据库应用程序通常同操作系统的最高管理员密切相关。广泛SQLSe rve r数据库又是属于“端口”型的数据库, 这就表示任何人都能够用分析工具试图连接到数据库上, 从而绕过操作系统的安全机制, 进而闯入系统、破坏和窃取数据资料, 甚至破坏整个系统。

3.1 防止让人探测TCP/IP端口

默认情况下, sqlserver使用1433端口监听, 很多人都说SQL Se rve r配置的时候要把这个端口改变, 这样别人就不会轻易地知道使用的什么端口了。可惜, 通过微软未公开的1434端口的UDP探测可以很容易知道SQLServer使用的什么TCP/IP端口。在实例属性中选择TCP/IP协议的属性。选择隐藏SQLServer实例。禁止对试图枚举网络上现有的SQLServer实例的客户端所发出的广播作出响应。这样, 别人就不能用1434来探测您的TCP/IP端口了 (除非用Port Scan) 。

3.2 修改TCP/IP使用的端口

请在上一步配置的基础上, 更改原默认的1433端口。在实例属性中选择网络配置中的TCP/IP协议的属性, 将TCP/IP使用的默认端口变为其他端口。

3.3 拒绝来自1434端口的探测

由于1434端口探测没有限制, 能够被别人探测到一些数据库信息, 而且还可能遭到Do S攻击让数据库服务器的CPU负荷增大, 所以对Windows 2000操作系统来说, 在IPSec过滤拒绝掉1434端口的UDP通信, 可以尽可能地隐藏您的s qls e rve r。

3.4 对网络连接进行IP限制

s qls e rve r 2000数据库系统本身没有提供网络连接的安全解决办法, 但是Windows 2000提供了这样的安全机制。使用操作系统自己的IPSec可以实现IP数据包的安全性。请对IP连接进行限制, 只保证自己的IP能够访问, 也拒绝其他IP进行的端口连接, 对来自网络上的安全威胁进行有效的控制。

上面主要介绍的一些sqlserver2000的安全配置, 经过以上的配置, 可以让其本身具备足够的安全防范能力。当然, 更主要的还是要加强内部的安全控制和管理员的安全培训, 而且安全性问题是一个长期的解决过程, 还需要以后进行更多的安全维护。

参考文献

[1]萨师煊等.数据库系统概论[M].北京:高等教育出版社, 2002.

[2]劳帼龄.电子商务安全与管理[M].北京:高等教育出版社, 2003.

SQLSERVER 篇2

[java]

import java.sql.*;

public class Try

{

public static void main(String[] args)

{

String JDriver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”;// SQL数据库引擎

String connectDB = “jdbc:sqlserver://10.77.20.xx:1433;DatabaseName=braV6”;// 数据源注意IP地址和端口号,数据库名字!可以将ip改成localhost(如果数据库在本机的话)

try

{

Class.forName(JDriver);// 加载数据库引擎,返回给定字符串名的类

} catch (ClassNotFoundException e)

{

// e.printStackTrace;

System.out.println(“加载数据库引擎失败”);

System.exit(0);

}

System.out.println(“数据库驱动成功”);

try

{

String user = “sa”;// 你自己创建的用户名字和密码!!!!!!!!!!!!

String password = “sa427”;

Connection con = DriverManager.getConnection(connectDB, user,

password);// 连接数据库对象

System.out.println(“连接数据库成功”);

Statement stmt = con.createStatement();// 创建SQL命令对象

// 创建表

System.out.println(“查询”);

System.out.println(“开始读取数据”);

ResultSet rs = stmt.executeQuery(“SELECT * FROM dbo.Author”);// 返回SQL语句查询结果集(集合)

// 循环输出每一条记录www.dnzg.cn

int i=0;

while (rs.next())

{

// 输出每个字段

System.out.println(rs.getString(“ID”) + “ ”);

if(i<100)

i++;

else

break;

}

System.out.println(“读取完毕”);

// 关闭连接

stmt.close();// 关闭命令对象连接

con.close();// 关闭数据库连接

} catch (SQLException e)

{

e.printStackTrace();

// System.out.println(“数据库连接错误”);

System.exit(0);

}

}

SQLSERVER 篇3

[关键字] 连接池(Connection Pooling) SQL Server .NET Pool Connection

使用连接池(Connection Pooling)的目的在于它能提高与数据库连接的应用程序的性能,可以极大促进应用程序的性能与可扩展性。由于网络速度以及与数据库距离等因素的影响,创建一个连接十分耗时,这在WEB应用中尤为突出。连接池的作用就是使连接可以重用,从而有效的提高性能。当用户释放一个连接后,这个连接就回到连接池中,供其他用户继续使用。下面我们探讨一下在SQL Server .NET中如何配置Connection Pooling。

SQL Server .NET Data Provider自动提供connection pooling。用户也可以自己提供一些连接字符串修饰符来控制connection pooling。

1、Pool的创建与指定

当连接打开时,基于精确匹配算法的一个connection pool被创建,这个算法将pool和这个连接的连接字符串相关联。在新连接打开时,如果连接字符串不精确匹配一个已存在的pool,新pool被创建。下例中,三个新的SqlConnection对象被创建,但只有两个connection pool要求管理它们。注意,第一个和第二个的连接字符串由所指定的initial catalog值不同而不同。

SqlConnection conn = new SqlConnection();

conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=northwind";

conn.Open();

// Pool A is created.

SqlConnection conn = new SqlConnection();

conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=pubs";

conn.Open();

// Pool B is created because the connection strings differ.

SqlConnection conn = new SqlConnection();

conn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=northwind";

conn.Open();

// The connection string matches pool A.

只要创建了connection pool,还有活动进程时connection pool就存在。维持不活动的和空pool的系统开销很小。

2、添加Connection

每个独立的连接字符串对应一个connection pool。当pool创建时,多个连接对象被创建并被加至pool中以保证最小的pool数。连接可以一直添加,直到邮大的pool大小。当SqlConnection对象被请求时,如果当前连接可用,我们可以从pool中获得它。为了可用,连接必须当前不被使用,而且必须有一个对应的连接上下文,并拥有一个与服务器的有效连接。如果达到最大的池大小而无可用的连接,请求被缓冲于队列中。对象pooler可以在有可用连接时再进行分配。如果超时后仍然没有可用连接会产生一个错误。注意:必须在使用后关闭连接,这可以通过close或dispose方法关闭连接。不显式关闭连接,连接不会自动被系统回收。

3、Connection的删除

如果连接的生存期到达或连接已经得到服务时,pooler将删除此对象。这个过程是在试图连接服务器后得到的。如果发现一个连接不再连接到服务器,标记它为无效。Pooler定期扫描标记无效的连接,这些连接以后会被永远删除。如果连接到的服务器消失,此连接会被移回pool中,即使它不被标记为无效。在此过程中会产生一个异常。此时用户仍然必须显式关闭连接以使它回到pool中。

4、支持操作

由pool中抽取的Connection基于操作上下文。请求线程的上下文和指定的连接必须匹配。因此每个connection pool实际上被分为无上下文连接的连接和另外N 个和特定上下文相连的连接。当连接关闭时,它返回pool并根据相应的操作上下文返回到相应的区中。因此用户可以安全地关闭一个连接,即使一个分布式连接仍然被挂起。这允许用户在其后忽略或终止一个分布式进程。

5、以连接字符串关键字控制Connection Pool

ConnectionString属性是SQLConnection 对象的一个属性,它支持一个连接串/值对,这个对是用于调整connection pool行为的。ConnectionString 的值及解释,如表1所示。

6、Connection Pool的性能记数器

SQL Server .NET Data Provider添加了一些性能记数器使用户可以调整connection pool特性。下面是一些记数器,如表2所示。

SQLServer查询优化探析 篇4

在IT技术高速发展, 互联网已渗透至千家万户的今天, 数据库技术始终居于中心地位。任何一个投入运行的信息系统中, 都会有一个数据库管理系统作为支撑。在所有数据库管理系统中, SQL Server则由于出自Microsoft公司, 与Windows操作系统的紧密集成, 以及方便易用的图形界面, 而处于极其重要的位置。SQL Server是一个数据库管理系统, 它采用了单进程、多线索技术, 支持存储过程, 采用基于成本的优化技术, 在核心层实现数据完整性约束, 并具有很强的安全保密性。它的工作主要是负责高速计算, 数据管理, 安全性及事务管理。

优化对于改善SQL Server性能至关重要, 可以通过降低网络流量、减少磁盘I/O和降低CPU时间, 最大化所有用户的处理吞吐量, 以提供每个查询可以接受的响应时间。在SQL Server性能的优化中, 数据查询的优化是一个重要的优化方法。本文在分析传统数据库管理系统查询优化技术的基础上, 提出了通过面向对象的方法来实现SQL Server的查询优化。

2 数据库的查询优化技术概述

对于每一个查询, Microsoft SQL Server数据库内核用优化器优化向SQL提交的数据操作。这个优化过程首先进行查询分析, 判断每一个子句能否被优化。对不能优化的子句采用全表扫描, 可优化的子句, 则由优化器执行索引选择。索引选择确定可用的索引, 并估算每个子句的开销。下面简单叙述一下SQL Server的查询优化技术:

2.1 自动查询优化技术

SQL Server的自动查询优化技术是通过基于开销的查询优化器来实现的。当提交一条SQL语句时, 该语句只是指出想要从数据库中得到什么结果, 而不是怎样得到结果。SQLServer使用基于开销的优化器, 以CPU使用, 磁盘I/O作为度量方式, 优化器为每个可能的执行规划赋予一个开销值, 然后优化器选择一个开销值最小的执行规划。查询优化所做的工作很复杂, 要找出最优执行规划, 优化器要考虑数以千计的因素。除了检查统计数据来决定以合适的方式使用索引外, 优化器还必须考虑访问表的顺序、所采用的连接算法、合适的排序算法, 以及许多其他细节方面的问题。当提交给查询处理器时, 只要比较两个输入来产生一个输出时, 就会用到连接操作。连接操作可以在表与表之间, 索引和表间, 以及索引和索引之间使用。SQL Server查询处理器会使用三种类型的连接策略:嵌套循环连接、合并连接和哈希连接。优化器必须考虑每个算法以决定对于给定情况的最合适算法。

2.2 索引技术

索引是一个单独的、物理的数据库结构, 它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单表的存储由两部分组成一部分用来存放数据页面, 另一部分存放索引页面。通常索引页面相对于数据页面来说小得多。数据检索花费的大部分开销是磁盘读写, 没有索引就需要从磁盘上读表的每一个数据页, 如果有索引, 则只需查找索引页面就可以了。所以建立合理的索引, 就能加速数据的检索过程。

SQL Server采用B-树结构的索引, 根据索引的顺序与数据表的物理顺序是否相同可以分为:聚簇索引 (clustered index) 和非聚簇索引 (nonclustered index) 。

一般来说建立索引应注意以下几点:

(1) 主键时常作为where子句的条件, 应在表的主键列上建立簇索引, 尤其当经常用它作为连接的时候;

(2) 有大量重复值且经常有范围查询和排序、分组发生的列, 或者非常频繁地被访问的列, 可考虑建立簇索引;

(3) 经常同时存取多列, 且每列都含有重复值可考虑建立复合索引来覆盖一个或一组查询, 并把查询引用最频繁的列作为前导列, 如果可能尽量使关键查询形成覆盖查询;

(4) 如果知道索引键的所有值都是唯一的, 那么确保把索引定义成唯一索引;

(5) 在一个经常做插入操作的表上建索引时, 使用fillfactor (填充因子) 来减少页分裂, 同时提高并发度, 降低死锁的发生。如果在只读表上建索引, 则可以把fillfactor设为100;

(6) 在选择索引键时, 设法选择那些采用小数据类型的列作为键以使每个索引页能够容纳尽可能多的索引键和指针, 通过这种方式, 可使一个查询必须遍历的索引页面降到最小。此外, 尽可能地使用整数为键值, 因为它能够提供比任何数据类型都快的访问速度。

2.3 存储过程的使用

随着Client/Server的应用程序的广泛使用, 如何充分利用网络资源、减少网络流量是提高应用查询性能的一个重要因素, 而存储过程的使用则是减少网络流量, 加快执行速度的必要环节。

存储过程是SQL Server服务器上一组预先定义并编译好的Transact-SQL语句, 它可以接受参数、返回状态值和参数值, 并且还可以嵌套调用。当一个存储过程被第一次运行时, SQL Server将该存储过程放入内存并完全编译 (不必进行词法分析与规范化, 因为在存储过程被创建时, 这些工作就已经完成了) , 在该存储过程被再次调用时 (无论是由同一用户还是不同用户调用) , 可以被马上处理, 而没有任何额外开销。另外, 存储过程是一种模式化的程序设计, 在Client/Server的应用程序中, 使用存储过程可以方便地进行程序设计, 减少程序员的工作量。

3 使用面向对象的方法实现SQL Server的查询优化

面向对象方法 (Object-Oriented Method) 是一种把面向对象的思想应用于软件开发过程中, 指导开发活动的系统方法, 简称OO (Object-Oriented) 方法, 是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体, 与客观实体有直接对应关系, 一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念, 以对象为中心, 以类和继承为构造机制, 来认识、理解、刻画客观世界和设计、构建相应的软件系统。

而如何将面向对象的方法运用到SQL Server的查询中去, 首先我们需要对SQL语句进行分析, 用类来归纳和构建SQL语句。

3.1 SELECT语句的语法结构分析

整个SELECT语句可以表示成为7个类。

(1) 表达式类 (expression) 。

(2) 字段类 (field) 。

(3) 数据类 (data) 。

(4) 数据表类 (table) 。

(5) 数据类型类 (type) 。

(6) SQL关键字类 (SQLKEY) 。

(7) 运算符类 (operator) 。

3.2 SQL SERVER查询语句的面向对象模型

图1是使用以上7个类的面向对象模型。

从模型可以看出, 本文构建的SQL语句面向对象的模型用户可以方便直观的创建、删除、合并、拆分各种类型的表达式, 无需记忆程序内部处理字段、函数等SQL语法的具体形式。达到了提高SQL SERVER中查询语句的运行效率目的提高了的性能

4 结语

随着Internet的日益普及, 基于SQL Server的应用程序, 其应用范围也越来越广。而数据库系统查询是数据库系统设计和实现中的一个重要步骤, 也是基于SQL Server应用程序设计时的一个重要问题。本文在分析了传统SQL Server查询优化的基础上, 提出了通过面向对象方法构建对象类来解析SQL查询语句, 使得用户能够用户可以方便直观的创建SQL Server中的查询语句, 而不用去关心内部的细节问题使得整个数据查询可以高效透明的进行.

参考文献

[1]龙守谌, 叶乃文, 邝劲筠.Microsoft SQL Server 6.5培训教程[M].北京:人民邮电出版社, 1998.

[2]车争, 夏巨谌, 胡国安, 张宜生.基于SQL Server的数据库与应用程序的优化[J].计算机辅助工程, NO.4 Dec, 2002.

[3]胡江奕, 任宏萍, 毛法尧.基于SQL Server的应用程序的优化[J].计算机工程与应用, 1998, (10) .

sqlserver实训心得 篇5

select * from

(select ROW_NUMBERover(order by AreaName)as rowNum, AreaName,

AreaTotalPoints=(select SUM(Points) from #tempPoints where JurisdictionalUnitArea in(select AreaID from GetSubAreas(AreaID)))

from Areas where ParentAreaID=@AreaID)as t

where rowNum>(@pageindex-1)*@pagesize and rowNum<=@pageindex*@pagesize

我原来是这样写的:

select ROW_NUMBER()over(order by AreaName)as rowNum, AreaName,

AreaTotalPoints=(select SUM(Points) from #tempPoints where JurisdictionalUnitArea in(select AreaID from GetSubAreas(AreaID)))

into #temp from Areas where ParentAreaID=@AreaID

select * from #temp where rowNum>(@pageindex-1)*@pagesize and rowNum<=@pageindex*@pagesize

drop table #temp

测试后发现不用临时表查询时间大大减少了。

小结:有时我们为了语句的逻辑清晰而使用临时表存储数据,但这样会影响sql语句执行效率,特别在数据量大的时候,这种差异尤为明显。所以要权衡选择。一般在数据量小时,使用它影响不大。

2、尽可能少选取列

select tempUser.JurisdictionalUnitArea,SUM(pr.Points)as yearPoints into #tempUser2

from #tempUser tempUser inner join PointRecords pr on tempUser.UserID=pr.EffectUserID。。。

我原来是这样写的:

select tempUser.* ,SUM(pr.Points)as yearPoints into #tempUser2

from #tempUser tempUser inner join PointRecords pr on tempUser.UserID=pr.EffectUserID。。。

其实自己需要用到的只是其中一部分数据列,有时为了图方便,就用*代替了,这样也会影响效率。

3、SET NOCOUNT 不返回计数功能

使用语句:SET NOCOUNT ON, 默认情况下(即不写)SET NOCOUNT 为OFF

一般使用sql server管理工具新建存储过程会自动创建这条指令,在不需要数据库告诉你执行完sql语句影响了多少行时推荐SET NOCOUNT ON,可以提高性能。

4、有无必要使用distinct

SELECT distinct u.*,ue.JurisdictionalUnitArea

SELECT u.*,ue.JurisdictionalUnitArea

distinct是返回数据表中不重复的记录,像注册用户这种情况一般在注册时就会验证唯一性,所以表中不会出现重复记录(其它情况可具体分析),就可以不使用distinct。

distinct和not in ,union等一样会导致全表扫描,导致性能下降,在能不用的情况下尽量不用。

补充:一般使用rowNumber()函数代替not in

SQLSERVER 篇6

一、Web环境中的验证

即使最好的安全策略也常常在Web应用中使用SQL Server的数据前屈服。在这种情形下, 进行验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的程序, 比如ASP页面或者CGI脚本;然后, 由Web服务器负责验证用户, 应用程序则使用自己的登录账户为用户访问数据。如果你使用的是IIS 5.0或者IIS 4.0, 可以用两种方法验证用户。一是为每一个网站和每一个虚拟目录创建一个匿名用户的NT账户, 此后, 所有应用程序登录SQL Server时都使用该安全环境。可以通过授予NT匿名账户合适的权限, 改进审核和验证功能。二是让所有网站使用Basic验证。此时, 只有当用户在对话框中输入合法的账户和密码, IIS才会允许其访问页面。最后, 如果用户都有个人数字证书, 可以把那些证书映射到本地域的NT账户上。因此, 应该把NT验证作为首选的用户身份验证办法。

二、允许数据库访问

在数据库内部对登录验证的处理方式不同, 可以把权限分配给角色而不是直接把它们分配给全局组。这种能力能使用户轻松地在安全策略中使用SQL Server验证的登录。创建了数据库之后, 可以用sp_grantdbaccess存储过程授权DB_Name Users组访问它。但应该注意的是, 与sp_grantdbaccess对应的sp_denydbaccess存储过程并不存在, 即不能按照拒绝对服务器访问的方法拒绝对数据库的访问。如果要拒绝数据库访问, 可以创建另外一个名为DB_Na me Denied Users的全局组, 授权它访问数据库, 然后把它设置为db_denydatareader以及db_denydatawriter角色的成员。注意SQL语句权限的分配只限制于对象的访问, 但不限制于DDL命令的访问。正如对登录过程的处理, 如果访问标志中的任意SID已经在Sysusers系统表登记, SQL将允许用户访问数据库。因此, 既可以通过用户的个人NT账户SID授权访问数据库, 也可以通过用户所在的一个 (或者多个) 组的SID授权。为了简化管理, 可以创建一个名为DB_Name Users的拥有数据库访问权限的全局组, 同时不把访问权授予其他组。

三、分配权限

实施安全策略的最后一个步骤是创建用户定义的数据库角色, 然后分配权限。完成这个步骤最简单的方法是创建一些名字与全局组名字配套的角色。例如对于前面例子中的会计系统, 可以创建操作、管理之类的角色, 然而, 如果角色名字与全局组的名字配套, 能够更方便地判断出哪些组属于特定的角色。创建好角色后就可以分配权限。在这个过程中, 只需用到标准的GR A NT, REVOKE和DEN Y命令。但应该注意DEN Y权限, 这个权限优先于所有其他权限。用户定义的数据库角色可以作为各种登录的通用容器, 使用用户定义角色而不是直接把权限分配给全局组。

四、简化安全管理

SQLSERVER 篇7

1 SQL Server触发器

SQL Server触发器是一类特殊存储过程,其由用户定义在数据表上并被事件驱动的由DBMS调用执行的。触发器不能被用户直接调用执行,也不能接收参数。在数据表上或在数据库对象上定义了相应的触发器后,当在数据表中DELETE、IN⁃SERT、UPDATE操作或在CREATE、DROP、ALTER数据库对象时将激发并自动执行相应的触发器,使得相应的操作必须满足由触发器所定义的约束规则才能得到成功执行。引起触发器被执行的相应操作和触发器被统一当作一次事务处理。当事务未能整体成功执行,则DBMS会自动回到该事务执行前的状态。触发器可用于各种数据规则、约束和默认值的完整性检查,也可完成更复杂的数据检测和业务逻辑规则。

1.1 触发器分类

按照触发事件的不同,SQL Server触发器可以分为DDL(Data Definition Language)触发器和DML(Data Manipulation Language)触发器两种。

1)DDL触发器用于处理相应的DDL事件。DDL事件有数据库系统用户登录与退出和CREATE、DROP、ALTER语句等操作。DDL触发器可用于审核与规范数据库中对表结构、视图结构上的操作,还可被用于应用系统管理任务。当数据库结构或表结构发生变化时激发触发器,触发器能记录相应的修改过程,并能禁止用户删除指定表、限制用户对数据库修改等操作。

2)DML触发器用于响应用户DML操作事件。DML操作事件是指针对表或视图的INSERT、DELETE和UPDATE操作语句。该类触发器在DML编辑数据时触发执行,在处理表或视图中数据时DML触发器检查操作是否满足相应业务规则,使得数据完整性进一步扩展。

根据触发器是在触发操作语句前还是后执行的不同,触发器又分为INSTEAD OF触发器和AFTER(FOR)触发器两种。

1)INSTEAD OF触发器。顾名思义,该种触发器在数据操作之前执行,代替操作数据的相关语句,实际上是执行触发器中的代码。该类触发器定义在视图或表上。在视图或表上,每个DELETE、UPDATE和INSERT语句只可定义一个INSTEAD OF触发器。

2)AFTER(FOR)触发器。在DML语句操作数据完成以后被触发执行。此种触发器可对被操作的数据进行业务规则检查,如果违反相应的业务规则,则返回该数据操作前的状态。只能在表上而不能在视图上定义AFTER(FOR)触发器,在同一张数据表上可定义多个AFTER(FOR)触发器。

1.2 DBMS生成的两个临时表

在执行DML触发器时,SQL SERVER生成两个只读型临时表:deleted表和inserted表。在触发器执行时这两个表才存在于内存,其表结构与激发DML触发器的视图或基表类似。

1)deleted表

deleted表仅存放进行本次UPDATE和DELETE语句操作的基表的旧数据行。执行UPDATE或DELETE语句时,该数据行从基表中移动到deleted表并从基表中删除。

2)inserted表

inserted表仅存放进行本次UPDATE和INSERT语句操作的新数据行。执行UPDATE语句或INSERT语句时,新数据行被插入基表的同时也被复制到inserted表中。

实际上,UPDATE操作可看做由DELETE操作和INSERT操作组合而成的。UPDATE操作时,DBMS将要修改的数据行从基表中删除并移到deleted表中,然后将修改后的新数据行同时插入到inserted表和基表中。

2 SQL Server触发器应用

触发器机制类似Windows系统的消息响应机制,我们可以灵活利用这一点,不仅可以在数据表上实施比CHECK约束、外键约束等更为复杂的检查和操作,可以引用数据库中其他表中的字段,具有更精细和更强大的数据控制能力,还可以利用DDL触发器对数据库应用系统实施各种应用控制,提高数据库应用系统的安全性。

2.1 实现CHECK约束检查功能

在DML触发器中可以灵活、编写代码处理相应的业务逻辑,因此DML触发器可以设置比CHECK约束更复杂、更强大的相应数据检查规则。例如医院所用某种药品已经停止采购,但此药品还需在药品数据表中存在,此时需要阻止门诊医生开列此药,数据库管理人员就可以在药品数据表上建立相应的触发器,来禁止医师修改已停止采购药品的数据,此任务无法使用CHECK约束来完成。当数据库系统设计者想控制错误信息或者给用户/客户应用程序传递错误信息时,无法使用CHECK约束实现,而触发器就能很好地完成任务。当需要发出更详细的错误信息以提示用户时,数据库系统设计者可以在触发器中使用RAISERROR()函数来达到目的。当在业务逻辑需要使用另一张表的数据时,也可以使用触发器来实现。触发器与CHECK约束各有优势。CHECK约束执行快且效率高,但只能引用同一表中的数据,而触发器却可以引用不同表中的数据。触发器可以完全实现CHECK约束的所有功能,但在效率上并不总是比CHECK约束好。触发器是维护引用完整性需要的一种最好选择,虽然它们的速度有点慢,但在维护数据完整性上更灵活。何时选择使用触发器与CHECK约束,需要根据实际情况定,首选CHECK约束,当CHECK约束无能为力时就用触发器。

2.2 数据库设计与批量数据导入

数据库设计时,要在表上设计各种约束以及要设计表与表之间的引用关系等等。在数据库系统调试中难免会对表结构进行改变完善,此时在原表上所建立的各种完整性约束都需要删除,在更改表结构建立表后,再重新建立各种约束,上述工作较难保证没有差错或遗漏,这就给数据库设计者带来较大不便。可以使用触发器来建立相关约束规则,在表结构发生更改时只需禁用触发器即可,随后也可方便地恢复触发器的使用,方便数据库设计和调试。在数据库系统开发完毕后再将某些触发器改为DRI(声明引用完整性)。当需要大批量导入数据时,往往需要关闭各种约束来方便导入数据;当使用触发器实现数据约束时,就能体现出触发器的优点。只需关闭触发器就可减少导入时的大量开销以实现批量数据的快速导入。

2.3 UPDATE()函数和UPDATE_COLUMNS()函数

在UPDATE触发器中,经常通过查看感兴趣的列是否通过发生改变来限制触发器中实际执行的代码数量,要完成这个任务,可以利用UPDATE()函数和UPDATE_COLUMNS()函数。

1)UPDATE()函数

该函数用于测试在指定列上进行的INSERT或UPDATE操作,不能用于DELETE操作,可以指定多列。只适用于触发器范围,其核心目的是对指定列进行是否被更新检测。

UPDATE(FIELD_NAME)值为true,则意味着FIELD_NAME列被更新。

例如:

2)UPDATE_COLUMNS()函数

该函数只适用于触发器范围,其核心目的是对多个指定列进行是否被插入或更新检测。该函数使用了与一个或更多字节的varbinary数据关联的位掩码。该位掩码与表中独立的列相关联(例如,c1与第1列关联,ci和第i列对应)。

当某位为1时,表示该位对应的列发生了更新。例如,c2、c4位值为1,表明第2列和第4列发生了改变。当列数超过8列的情况下,SQL SERVER就增加一个字节(Second byte)并保持记录。假设只是第2列和第4列发生了改变,则UPDATE_COL⁃UMNS()函数使用的掩码为00001010,2+8=10。可以使用:

UPDATE_COLUMNS()^10=0成立,则表示只是第2列和第4列发生了改变;

UPDATE_COLUMNS()&10=10成立,则表示第2列和第4列发生了改变,不关心其他列的状态;

UPDATE_COLUMNS()|10!=10成立,则表示除了第2列和第4列还有其他列也发生了改变;

UPDATE_COLUMNS()>0成立,表示有列被更新。

例如:

2.4 加强数据库用户管理

可以针对CREATE、ALTER和DROP开头的语句,建立DDL触发器。为防止对数据库架构进行某些更改时,当希望数据库中发生某种情况以响应数据库架构中的更改时,当需要记录数据库架构中的更改或事件时,使用DDL触发器进行管理。可以对密码表中指定列设定AFTER(FOR)DML触发器,当表中用户名或密码值发生变化时,将操作者、操作时间、操作对象、前后变化的数据等内容进行保存并向数据库管理员发通知,为及时发现不合法操作、加强系统审核、保障数据库的安全提供帮助。

3 SQL Server触发器应用注意事项

3.1 触发器执行是被动的而不是主动的

这里主要指AFTER触发器发生在事件发生之后,在触发器被激活时,整个触发语句已经执行而且事务已经记录在日志中了(但没有提交)。这意味着,如果触发器需要rollback,就不得不撤销已经完成的大量工作,因此促发其对系统性能的影响程度取决于触发语句工作量的大小。而约束是主动的,约束是在实际语句发生之前执行的,这意味着它们在所有主要工作完成前阻止失败的事情发生。也就意味着约束的运行速度要快一些。特别是触发语句越复杂、影响数据量越大,使用触发器所带来的效率影响也越大。

3.2 尽量保持触发器简洁

触发器是与所调用的语句所在事务的一部分。这意味着语句要到触发器结束时才完成。如果在触发器的语句体中书写了运行很长时间的代码,就意味着引起触发器触发的每段代码,运行时间都很长。因此这很可能使得应用程序执行效果较差。

3.3 尽量不要在触发器中回滚

做到这一点较为困难,因为回滚是在触发器中通常希望完成的主要任务。最典型的触发器——AFTER触发器——发生在大部分操作已经完成以后,这也意味着回滚开销很大,这也是为什么建议尽可能使用DRI的原因。如果在触发器中使用多条ROLLBACK TRAN语句,最好在执行激活触发器的语句之前预先找到错误。在错误发生前进行测试,不要等到回滚的时候。

4 结束语

灵活使用触发器可以帮助数据库系统设计者和维护者实现许多复杂的功能,能较好地提高信息系统的数据完整性。但要慎用触发器,如果滥用会造成数据库系统的维护困难。因此在数据库系统设计中,尽量使用DRI来保证数据完整性。合理的触发器设计既可以保护表中的数据,使数据表更加安全,又可以减少数据库设计者的劳动强度,具有事半功倍的作用。

摘要:该文介绍了触发器类型、特点以及触发器产生的两个临时表,并着重对触发器提高数据完整性的应用及其注意事项进行了阐述,以期对数据库设计者在设计数据库系统时提高数据完整性控制提供有益帮助。

关键词:完整性,触发器,CHECK约束

参考文献

[1]张峰.触发器在数据处理过程中的应用研究[J].计算机工程与科学,2008(5).

SQLSERVER 篇8

几乎所有的SQL Server内存分配都是使用虚拟内存,大部分的内存分配的代码分解到最后都是调用Win32的VirtualAllo和VirtualFree API函数。SQL Server通过调用VirtualAllo函数来预留和提交虚拟内存,通过VirtualFree函数来释放内存。

因此通过合理优化内存配置、扩充虚拟内存提高计算机运算速度也就成了一项很重要的应用技术手段。

1 优化Windows系统内存配置

以Windows2000 Server为例,Windows2000 Server系统建议最少256MB RAM。如果再添加一些服务和应用程序,则其对于内存的需求就会增大。如:

(1)添加网络服务需要4MB内存空间。

(2)容错功能和系统保护功能需要8MB内存(如磁盘镜像和分条功能)。

(3)进行图形图像处理需要增加16MB内存空间。

(4)安装VC、VB开发系统需要增加16MB内存空间。

另外,如在Windows NT上构建大型数据库如SYBASE、Microsoft SQL Server等,对内存的需求就更多了。

为了使Windows NT不过分占用较多的内存或者浪费处理器的时间用于换页,可以采用关闭不需要的服务程序或驱动程序、尽量不要在服务器上使用其他应用程序等方法优化内存性能。

设置合适的虚拟内存也将提高系统的性能。在设置Windows NT虚拟内存时需要合理确定各个驱动器分页文件的“起始大小”和“最大值”两个参数,它们用于指定分页文件的起始空间和最大空间。分页文件起始大小应保留缺省设置,一般情况下不要改动;分页文件理想的最大尺寸为系统物理内存尺寸的2.5倍至4倍。需要说明的是:如果系统工作时不需要大量内存,请选择靠近下限的值,即用系统物理内存的2.5倍作为这个尺寸的起始值;如果系统工作时需要大量内存,请选择靠近上限的值。

此外,尽可能设立专用硬盘配置内存交换区,或将交换空间放到主硬盘的另一个分区,同时应降低主硬盘的交换文件大小,这样主硬盘(分区)仅用来放置操作系统和应用程序,就可以减少交换次数,防止频繁交换耗费大量CPU时间。

虚拟内存技术的确改善了Windows NT系统的性能,但也受到机器硬盘空间大小、硬盘速度、处理器速度的影响,从理想角度出发,要提高计算机的性能就必须减少交换操作的次数,但是没有一个Windows NT计算机不发生交换,这就要求计算机要有足够的物理内存,以保持最少的交换操作。

2 优化数据库内存配置

Microsoft SQL Server 2000的内存管理组件消除了对SQL Server可用的内存进行手工管理的需要。SQL Server在启动时根据操作系统和其他应用程序当前正在使用的内存量,动态确定应分配的内存量。当计算机和SQL Server上的负荷更改时,分配的内存也随之更改。

(1)min server memory:服务器配置选项可用于确保SQL Server至少以最小的分配内存量启动,并且内存低于该值时不会释放内存。可以基于SQL Server的大小及活动将该配置选项设置为特定的值。

(2)max server memory:服务器配置选项可用于:在SQL Server启动及运行时,指定SQL Server可以分配的最大内存量。

不要将min server memory和max server memory服务器配置选项设置为相同的值,这样做会使分配给SQL Server的内存量固定。也就是说一旦分配给数据库引擎的内存达到该值,数据库引擎将停止动态释放和获取内存。动态内存分配可以随时间提供最佳的总体性能。

(3)max worker threads:服务器配置选项可用于指定为用户连接到SQL Server提供支持的线程数。255这一默认设置对一些配置可能稍微偏高,这要具体取决于并发用户数。一般情况下,应将该配置值设置为并发连接数,但不能超过1,024。当SQL Server运行在Microsoft Windows 95或Microsoft Windows 98上时,最大工作线程服务器配置选项不起作用。

(4)index create memory:服务器配置选项控制创建索引时排序操作所使用的内存量。增加该值可提高索引创建的性能。

(5)min memory per query:服务器配置选项可用于指定分配给查询执行的最小内存量。当系统内有许多查询并发执行时,增大min memory per query的值有助于提高消耗大量内存的查询的性能。

参考文献

[1](美)Jenney Lynne Fields著,袁勤勇,等译.Microsoft SQL Server2000优化指南.清华大学出版社.

[2]张璞.大型数据库应用系统中的数据库性能优化方法[期刊论文].现代计算机(专业版),2004(11).

SQLSERVER 篇9

关键词:SQL Server,数据库,应用分析

0引言

SQL是结构化查询语言 (Structured Query Language) 的缩写, 其功能包括数据查询、数据操纵、数据定义和数据控制4个部分, 主要功能就是同各种数据库建立关联性, 让不同的数据库和不同的部分能够进行沟通。SQL 语言简洁、方便实用、功能齐全, 已成为目前应用最广的关系数据库语言。

SQL Server 2008是一个目前使用广泛的数据库平台, 它能够提供全面的企业级的数据管理, 不但在构建和管理高性能的数据库应用程序方面表现出强大的功能, 在为关系型数据和结构化数据提供了安全级别更高的存储功能。

1SQL Server日志文件的修复

在平常的数据库使用过程中, 会因为一些计算机方面的原因导致SQL Server2008的数据库的日志文件发生损坏, 像计算机的一些硬件方面的故障, 或者一些非正常的关机等都会导致数据库日志文件的损坏, 这样就会影响到我们的工作以及对软件的使用。SQL Server2008提供的修复功能是非常使用的, 它可以通过简单快捷的方式对数据进行修复, 恢复数据库的正常运行和使用。通常, 在这种数据库发生损坏的情况下我们都会对数据库的日志文件进行修复, 使数据恢复。这里推荐一种较易掌握且使用方便的方法来对数据进行修复。首先要停止数据库的服务, 然后将需要恢复的数据库文件进行复制, 再启动数据库, 把SQL Server Management Studio 中删除要恢复的数据库, 在这基础上新建同名的数据库, 然后停止数据库的服务, 用备份的。mdf文件覆盖新数据库的同名文件, 最后再次启动数据库服务, 运行alter database dbname set emergency, 再将数据库设置为Emergency模式, 接着运行下面的命令就可以恢复数据库了。

2优化SQL Server 数据库查询

在查询数据库的时候, 我们建议最好不要使用or语句, 因为当使用or的时候, 会引起数据库对全表进行扫描, 这样就会加大查询的工作量, 直接影响了数据库查询的效率。有时候在查询的过程中要用到联合索引, 用UNION all 来执行可以提高查询的效率, 并且把数据和日志以及索引分别放在不同的I/O设备上, 可以直接加快数据读取的速度。数据量与I/O的联系是相当紧密的, 通常越大的数据量, 就越需要提高I/O。在平常的工作和学习中, 我们通过不断的实践和验证, 在查询的过程中, 用charindex () 与前面加%的like差不多, 并没有提高多少, 反而charindex () 会让索引失去作用。并且, 在字段提取的时候, 尽量坚持”需要多少就提取多少”的原则, 否则只会加大计算机的工作量, 有选择性地提取相应的字段, 就可以有效减少不必要的数据读取, 数据的提取速度也会有提升, 提高工作效率。其次, 要建立适当的索引, 优化索引、优化访问的方式, 适当限制结果集的数据量。当改变表中的数据 (如增加或删除记录) 时, 索引将自动更新。索引建立后, 在查询使用该列时, 系统将自动使用索引进行查询。索引数目无限制, 但索引越多, 更新数据的速度越慢。对于仅用于查询的表可多建索引, 对于数据更新频繁的表则应少建索引。建立索引是为了提高查询速度, 但随着索引的增多, 数据更新时, 系统会花费许多时间来维护索引, 这时应删除不必要的索引。

3提高SQL Server数据库安全

数据库是一种交互式的端口, 目的就是通过客户端与外界进行交流和访问, 因此, 数据库同样也是存在安全隐患的。数据库的安全隐患包括两方面的内容:一方面是计算机系统方面的安全问题, 如果电脑使用不当, 或者没有做好防范, 一些不法分子就容易通过互联网或局域网等一些途径来对计算机进行入侵来破坏计算机的系统正常运作, 通常会使计算机无法正常启动, 有时也会通过病毒来计算机进行超负荷的计算, 致使CPU因过量运作而烧坏, 这些都是计算机系统方面存在的安全隐患;另一方面是数据库资料方面存在的安全隐患, 比如一些不法分子为获得一些有用的资料而入侵数据库盗取有用的资料。数据库的安全使用是至关重要的, 因此, 数据库使用的前提是必须先保证客户端的安全。因此, 我们可以在客户端安装一些有效的防毒杀毒软件和防火墙之类的安全保障工具, 还可以安装一些升级补丁来不断提高和巩固客户端的安全性。在这里, 值得注意的是, 数据在一般的传输过程中很容易被监听或被捕获, 所以应该使用加密的手段来保证数据的机密性, 可以建立一些数字和字母组合的密码, 并且养成经常修改密码的习惯。在SQL系统中, 有两个安全机制:一种是视图机制, 当用户通过视图访问数据库时, 不能访问此视图外的数据, 它提供了一定的安全性;另一种是权限机制。权限机制的基本思想是给用户授予不同类型的权限, 在必要时可以收回授权。使用户能够进行的数据库操作以及所操作的数据限定在指定的范围内, 禁止用户超越权限对数据库进行非法的操作, 从而保证数据库的安全性。

4对SQL Server数据库进行备份

要养成定期对数据库进行备份的习惯, 这样不但可以防止系统发生故障等因素而导致的数据丢失和损坏, 对数据进行备份是最简单的恢复大量信息的方法。因此, 要常对数据进行备份。对于备份, 可以准备一个备份服务器, 这个备份的服务器是应该可以随时代替主服务器的, 并且要保证备份的服务器是能够支持SQL Server的运行, 还要可以对所有的数据库, 以及整个系统和用户账户等数据资料都能够进行完整的备份, 如果这样的话, 即使主服务器停止工作, 备份的服务器也可以代替主服务器继续工作。一般来说, 用另外的计算机来备份数据库是比较方便且经济的方式, 只需要在局域网内的另外一台计算机上安装Microsoft Windows NT及SQL Server, 并且在该计算机上建立一个与主服务器中的数据库同名的数据库, 再利用SQL Server系统本身自带的异机传送工具设置好。那么计算机将自动把数据传送到设定好的服务器中, 当计算机发生故障或者系统崩溃的时候, 只需要重新把SQL Server装好, 再把另一台计算机里面的数据再传送回来就可以恢复数据。

5结束语

以SQL Server为基础建立的数据库应用程序, 系统界面简洁易操作, 系统计算及分析、检索的功能也非常全面和强大, 还可以保证系统及时进行数据采集, 按照客户的要求来生成需要的统计报表, 为业务活动的全面分析提供有力的保障。用户在使用数据库的同时, 能够通过一些方法和技巧来提高数据库的工作效率和安全性, 才能让数据库发挥它更大的作用, 为用户提供更多便利。

参考文献

[1]张超.数据库加密技术在SQL Server2008中的应用分析[J].宿州教育学院学报, 2010 (4) .

[2]贾荣飞.基于用户查询日志的查询聚类[J].北京航空航天大学学报, 2010 (4) .

[3]曾玲.SQL Server应用系统性能优化的有效途径[J].计算机与数字工程, 2005 (9) .

SQLSERVER 篇10

1 基于SQL Server数据库教学中还存在的问题

在现今的许多高等院校中, SQL SERV ER已经被列为其计算机专业和信息管理专业学生必修的一门重要课程。通过多年数据库方面的教育教学经验和研究, 加上和学生们的深切的探讨交流, 对于数据库的课程教学中存在的一些问题做出了以下的总结。

1.1 对理论教学的重视度不够

由于学生固有的一些层次与特点, 许多的高校老师提出了一些理论, 他们认为没有必要去向学生灌输大量的数据库的理论知识, 在他们看来学生也不热衷于对数据库理论的学习, 并且他们觉得即便是讲了学生也无法掌握, 因此也就忽略了这一部分。一些SQL SERVER教材甚至没有将有关数据库基础理论知识的部分编写进去从而陷入一个很大的误区。学生们掌握一些数据库思想和基础的理论知识是必不可少的。

1.2 教学方法应该多样化

在日常的授课过程中, 有的老师在讲课过程中注重讲解程序, 每一节课都会写很多的代码或者分析很多的代码, 学生看了就会不由自主的产生畏惧, 会在心理上不自觉的产生抵触, 因此学生的积极性会遭受沉重的打击。还有很多的老师重点讲的是命令的使用和技巧, 这样根本无法使学生理解这些操作的意义, 以及真正理解对数据库进行这些操作的可实现性。

1.3 教材的选用不合理

对于一门课程而言, 一本好的教材至关重要, 如果教材选择不当, 会直接影响到教学的效果。现在的很多教材之间也是千差万别, 有的教材会在书中列举很多的实例, 但是这些实例并不是很实用, 纯粹是为了介绍知识所做的一些举例。而有的教材侧重于介绍理论, 不注重实践, 学生在学习过程中难以理解和掌握。

1.4 考核方式与课程特点不符合

考试对学生而言就像一个指挥棒, 学生们的学习重点是以考试为参照的, 考试涉及到哪些方面, 学生们的学习就会侧重哪些方面。而对于老师们而言, 考试的地位相当重要, 因为考试能很好的检验自己的教学效果, 所以倘若考核方式安排不合理, 那所有的成果都会付之东流。如单纯只通过笔试考一些理论知识, 那么学习这门课就显得毫无意义可言了。就目前而言, 该课程的考核方式还主要是笔试, 其效果不明显, 往往是学生考完试, 知识也就忘光了。

2 教学方法的改革措施

2.1 多种方式相结合的教学模式

教学方法应该注重其多样性, 在教学过程中可以充分利用任务驱动、案例教学、网格教学等多种方法, 可以将这些方法有机结合在一起进行授课。

另外, 笔者必须强调的一点是案例教学没有必要取材很大, 一个很小的实例就可以很好的表达立意并达到说明道理的目的。比如在讲“假如在查询中, 条件语句引用了索引列, 能极大的提高查询速度”这个观点的时候, 就是通过引用几行简单的代码来证明这个观点的。而所用的方法就是针对SQL SERVER内嵌的范例数据库Adventure Works (因为在这个数据库中, 它的表都有很多的记录, 对这个数据库做实验效果会体现的很明显) , 进行以下的代码:

所要测试的SELECT语句

S E L E C T时间差=D I F F (M S, @T, getdate () )

对于这种测试必须分开进行。首先是要测试没有建立索引时它的速度, 其次就是测试在建立索引后的查询的速度, 在数量上面两者会有一定的差距, 通过量上的差距就能很明显发现其本质的差距。通过这个方法, 索引能够加快查询的速度这一观点就不言自明了。

2.2 选择合适的教材

在课堂中, 教材毫无疑问是教学的根本所在, 也是教学过程中的主要媒介, 它是知识能力的载体, 是经过很多的专家长期以来根据学生的实际情况、学科的特征、时代的特点系统地编写出来的, 所以它有着极其丰富的内涵。为了能够让教材充分发挥它的巨大的作用, 我们就必须要用心挑选合适的教材。值得关注的是, 何谓好教材, 这就要求我们必须要考虑到方方面面, 比如学生的层次、水平等。

2.3 理论联系实际

对于学生而言, 实践能力是十分重要的, 但与此同时实践能力需要扎实的理论知识做坚强的后盾, 脱离了理论知识, 实践就会变得十分肤浅, 只注意到表面的变化, 而忽略了它的内涵。要讲好理论知识, 重点在于如何将枯燥的理论知识讲活, 并与实践内容结合的更加完美, 理论联系实际, 要尽可能的从现实生活中找到实例。比如, 在讲解到索引这一个对象的时候, 就可以想象如何建立索引, 还必须要知道什么叫索引以及为什么要建立索引这样的一些问题。笔者在讲解这个知识点的时候, 根据从英文字典中查找某一个单词这个示例, 通过教材中的目录来查询某一个知识点这个示例, 比较这两个方法, 罗列出它们之间的联系和区别, 都能极快地查找到所需要的东西, 但它们的形式又各不相同, 这便是两种形式的索引——聚簇索引及非聚簇索引之间的关系, 通过这个方法, 学生就能深刻的理解并掌握什么是索引、它有一些什么样的优点等问题, 进而在涉及到后续的有关索引的创建等内容的时候, 肯定就很好懂了。

2.4 考核方式的改革

要真正做到将日常工作落到实处, 就要求我们必须改革相应的考核方式, 把平时的实践放到最后的总成绩里来, 让平时的实践能在最后的总成绩之中占有相当的比例, 只有采取这种方法, 才能将平时的工作达到最让人满意的效果。另外, 针对这门课程中需要比较强的操作性这一特点, 在对学生进行考核的时候, 必须把重点放在考核学生的实际操控技能的掌握和熟练程度这两点上, 所以, 对现行的考试方式进行改革。注重学生运用知识的能力的考核, 颠覆了以前只有笔试考试一种考核方法的方式。

3 结语

在本文中罗列的一些改革办法基本都已经落实到位, 这些方案都具有一定的可行性。通过实施这些措施, 大大提高了学生们学习的自觉性, 激发了他们自主创新的意识, 有力的提高了发现问题、分析问题以及解决问题的能力和实践动手的能力, 极大的调动了学生们获取知识的主动性以及积极性, 从而在极大程度上提高了教学质量。

参考文献

[1]朱如龙.SQL SERVER 2005数据库应用系统开发技术[M].机械工业出版社, 2006.

上一篇:深化就业教育下一篇:制药工程改革工艺设计

本站热搜

    相关推荐