加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

浪潮软件在MSSQLServer2000环境下系列问题探讨

发布时间:2020-12-12 15:16:18 所属栏目:MsSql教程 来源:网络整理
导读:浪潮通软ERP-PS软件在MSSQLServer2000环境下系列问题探讨 浪潮通软ERP-PS管理软件支持各种大型关系型数据库(SYBASE、MS?SQLSERVER、ORACLE等);广大技术支持人员对sybase已经是很熟悉了,对oracle也有了一定的了解。但是对MS?SQLSERVER这一易学易用的数据

浪潮通软ERP-PS软件在MSSQLServer2000环境下系列问题探讨

浪潮通软ERP-PS管理软件支持各种大型关系型数据库(SYBASE、MS?SQLSERVER、ORACLE等);广大技术支持人员对sybase已经是很熟悉了,对oracle也有了一定的了解。但是对MS?SQLSERVER这一易学易用的数据库返而不太了解,特别是对一些问题的处理感到束手无策。本文针对实施中常见的问题给予解答,希望揭开大家心中的迷惑。
其实SQL?Server与sybase?是同出一宗,最初是由Microsoft、?Sybase?和Ashton-Tate
三家公司共同开发的。在Windows?NT?推出后Microsoft与Sybase?在SQL?Server?的开发上就分道扬镳了,Microsoft?将SQL?Server?移植到Windows?NT,专注于开发推广SQL?Server?的Windows?NT?版本;Sybase?则较专注于SQL?Server在UNIX?操作系统上的应用。
所以大家在理解的时候可以套用sybase中的一些概念如:数据库、设备、用户等。我们常见的sqlserver有6.5、7.0、2000等版本,以下的问题都是针对最新版本SQLServer2000来阐述。

1. 安装问题
1)SQL?Server?2000?的常见版本如下
企业版Enterprise?Edition
支持所有的SQL?Server?2000?特性可作为大型Web?站点企业OLTP?联机事务处
理以及数据仓库系统等的产品数据库服务器
??标准版Standard?Edition
用于小型的工作组或部门
??个人版Personal?Edition
用于单机系统或客户机
??开发者版Developer?Edition
用于程序员开发应用程序这些程序需要SQL?Server?2000?作为数据存储设备
?
通过以上可以看出win2000?pro只能安装个人版以下版本,一般作为企业的数据服务器来应该安装标准版或企业版。
2. 常用维护工具的使用
sqlserver的操作界面比较友好,提供了很多图形和文本的工具,下面与sybase对比一下以利于大家的理解。
? Enterprise?Manager?企业管理器??=(sybase?central)
企业管理器Enterprise?Manager?是SQL?Server?中最重要的管理工具,在使用SQL?Server
的过程中大部分的时间都是和它打交道。通过企业管理器的图形化操作可以管理所有的数据库系统工作和服务器工作。如:建库、帐户管理、备份恢复等,也可以调用其它的管理开发工具
? Service?Manager服务管理器?=?(Sybase?无此工具通过控制面板服务中进行管理)
服务管理器Service?Manager?用于启动暂停或停止数据库服务器SQL?Server?SQL、
Server?Agent?MSDTC、?Microsoft?Distributed?Transaction?Coordinator?微软分布式事务协调
器,当然也可以象sybase一样在控制面板服务中进行管理。
? Query?Analyzer?查询分析器?=(sql?advantage)
查询分析器Query?Analyzer?用于执行Transaction-SQL?命令等SQL?Scripts?SQL?脚本
程序以查询分析或处理数据库中的数据这是一个非常实用的工具对掌握SQL?语言
理解SQL?Server?的工作有很大帮助使用查询分析器的熟练程度是衡量一个SQL?Server?用
户水平的标准
? Client?Network?Utility?客户端网络实用工具=?(Sybase?dsedit)
SQL?Server?Client?Network?Utility?用于配置客户端的连接测定网络库的版本信息以及
设定本地数据库的相关选项,一般sqlserver2000不需要配置,直接指定服务器名即可,但有时连不通时可以配置一下填加服务器别名,此处支持多种协议。不过sqlserver2000没有ping命令可以直接连接测试是否连通!
3. 关于备份恢复
1)备份
备份的目的有两个:出于安全性和数据库移动。
n 使用SQL?Server?Enterprise?Manager?管理备份
在想要备份的数据库上,单击右键,选择所有任务-备份数据库,
?

建议选择数据库-完全备份,重写项选择重写现有媒体,添加一设备。设备可以是一物理文件或一备份设备。可以定义为自动备份。
n 使用Transact-SQL?命令备份数据库
BACKUP??DATABASE??database_name??[?TO<?backup_device?>?[?...n?]?]

2)恢复数据库:

n 从本机上恢复

操作较简单,单击右键选择用于恢复的备份执行恢复即可。
命令方式:restore??database??database_name??from??disk="filename"?or?backup_device


n 恢复到其他机器
我们经常要将企业管理器备份出的数据在另外一台server上恢复,需要以下步骤:
1. 首先通过以下语句从备份文件恢复数据库
restore??database??cwbase1??from??disk=‘c:/mxs/aaaa.dup’?with?replace,
move?’cwdata2‘ to?’c:/data/cwdata1_10.dat‘,
move?’cwlog2‘ ?to ‘c:/data/cwlog1_10.dat’

说明:
c:/mxs/aaaa.dup是从原数据库备份出的数据文件名称;
cwdata2?和cwlog2是原数据库的逻辑名称;
c:/data/cwdata1_10.dat?和?c:/data/cwlog1_10.dat?是现数据库的物理文件;
2. 恢复以后登录财务软件可能提示“lc0019999为非法用户”解决方法如下:
配置系统参数允许修改系统表
sp_configure?"allow?updates",1
go
reconfigure??with?override?

修改cwbase1..sysuser?的sid与master..syslogins?sid一致(注意此处为16进制)

例:查询master..syslogins中lc0019999的sid为0xE6804ECE73156E41B8B8DAF88AD6AE84
update?cwbase1..sysusers?set?sid=0xE6804ECE73156E41B8B8DAF88AD6AE84?where?name="lc0019999"
此时登录可能会提示“lsxtmc不存在”,再进行第三步
3、修改sysobjects?中用户表的uid?为lc0019999的uid,假设lc0019999的uid为6
?update??sysobjects?set?uid=6?where?uid<>1
?go

备注:有时会遇到字符集不一致的问题,需要重建master库。通过以下工具实现:
C:/Program?Files/Microsoft?SQL?Server/80/Tools/Binn/rebuildm.exe

n 服务器崩溃后数据是否能恢复

答案是肯定的,可以用Sp_attach_db?系统存储过程,将当前的数据物理文件附加到数据库中。
附加数据库将会创建一个新的数据库,并复制存储在已有的数据库文件和事务日志文件中的数据

语法如下:
sp_attach_db?[@dbname?=]?"dbname",
[@filename1?=]?"filename_n"?[,...16]

举例:如某用户服务器崩溃系统无法启动,只有物理文件"c:/data/cwdata1_10.dat",
和"c:/data/cwlog1_10.dat"?可用,这时可以重装sqlserver系统——重建帐套——删除数据库——最后执行以下语句恢复:

exec?sp_attach_db?@dbname?=?"cwbase10",
@filename1?=?"c:/data/cwdata1_10.dat",
@filename2?=?"c:/data/cwlog1_10.dat"

运行结果如下
Successfully?attached?database?"cwbase10".


4. 关于日志清除
问题:SQL?SERVER?2000事务日志文件XXXX_Log.LDF文件已增长到4G,日志文件一直放着也不是个办法,删除呢,又会失去恢复的可能性。现在由于事务日志文件太大,就已经无法在其他硬盘较小的空间恢复该数据库。现在想删出该日志文件。却报:错误5020:不能在主数据库中删除主数据文件或主日志文件。也不能更改事务日志文件的物理文件名。
解决方法:
n 手工截断日志:
BACKUP?LOG???database_name??WITH??NO_LOG
n 使其自动收缩,自动截断日志
在企业管理器里面,选择一个database,右键,属性,然后找到“事物日志”文件那一页,进行相应的大小限制,然后还有一“选项”页,可以设置“Auto?Shrink”和“Auto?Truncate”,

5. 从SQL6.5、SQL7.0升级到SQL?2000问题
SQL6.5升级到SQL7.0打上补丁直接安装新的版本即可,系统会将低版本升级到高版本。而且允许在同一系统安装多个sqlserver版本,通过版本切换可以返回老的版本!
6. 系统优化问题
性能调节的目的是通过将网络流通、磁盘?I/O?和?CPU?时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。
经验表明:可以从逻辑数据库设计、索引设计、查询设计以及应用程序设计的常规方面得到?SQL?Server?性能上的最大优势。相反,最大的性能问题通常是由于这些方面发生了问题。如果您关注性能问题,首先应把考虑重点放在这些方面,因为通常可以投入相对较少的时间获得显著的性能改善。?
但对于我们的实施人员我们能够做的也就是通过调整系统参数来实现一定的优化。Microsoft?SQL?Server?2000?自动调整很多服务器配置选项,因此系统管理员只需做很少的调整(如果有)。这些配置选项可以由系统管理员修改,但一般建议保留为默认值,以使?SQL?Server?能根据运行时的情况自动对自身进行调整。
不过,如果需要,可以配置下列组件以优化服务器性能:SQL?Server?内存、I/O?子系统和操作系统配置,特别注意红字部分
n SQL?Server?内存
下列服务器配置选项可用于配置内存使用并影响服务器性能:?
· min?server?memory
· max?server?memory
· max?worker?threads
· index?create?memory
· min?memory?per?query?
min?server?memory?服务器配置选项可用于确保?SQL?Server?至少以最小的分配内存量启动,并且内存低于该值时不会释放内存。可以基于?SQL?Server?的大小及活动将该配置选项设置为特定的值。始终将?min?server?memory?服务器配置选项设置为某个合理的值,以确保操作系统不向?SQL?Server?请求太多内存而影响?SQL?Server?性能。
max?server?memory?服务器配置选项可用于:在?SQL?Server?启动及运行时,指定?SQL?Server?可以分配的最大内存量。如果知道有多个应用程序与?SQL?Server?同时运行,而且想保障这些应用程序有足够的内存运行,可以将该配置选项设置为特定的值。如果这些其它应用程序(如?Web?服务器或电子邮件服务器)只根据需要请求内存,则?SQL?Server?将根据需要给它们释放内存,因此不要设置?max?server?memory?服务器配置选项。然而,应用程序通常在启动时不假选择地使用可用内存,而如果需要更多内存也不请求。如果有这种行为方式的应用程序与?SQL?Server?同时运行在相同的计算机上,则将?max?server?memory?服务器配置选项设置为特定的值,以保障应用程序所需的内存不由?SQL?Server?分配出。
不要将?min?server?memory?和?max?server?memory?服务器配置选项设置为相同的值,这样做会使分配给?SQL?Server?的内存量固定。动态内存分配可以随时间提供最佳的总体性能。
max?worker?threads?服务器配置选项可用于指定为用户连接到?SQL?Server?提供支持的线程数。255?这一默认设置对一些配置可能稍微偏高,这要具体取决于并发用户数。由于每个工作线程都已分配,因此即使线程没有正在使用(因为并发连接比分配的工作线程少),可由其它操作(如高速缓冲存储器)更好地利用的内存资源也可能是未使用的。一般情况下,应将该配置值设置为并发连接数,但不能超过?1,024。
?

index?create?memory?服务器配置选项控制创建索引时排序操作所使用的内存量。在生产系统上创建索引通常是不常执行的任务,通常调度为在非峰值时间执行的作业。因此,不常创建索引且在非峰值时间时,增加该值可提高索引创建的性能。不过,最好将?min?memory?per?query?配置选项保持在一个较低的值,这样即使所有请求的内存都不可用,索引创建作业仍能开始。
min?memory?per?query?服务器配置选项可用于指定分配给查询执行的最小内存量。当系统内有许多查询并发执行时,增大?min?memory?per?query?的值有助于提高消耗大量内存的查询(如大型排序和哈希操作)的性能。不过,不要将?min?memory?per?query?服务器配置选项设置得太高,尤其是在很忙的系统上,因为查询将不得不等到能确保占有请求的最小内存、或等到超过?query?wait?服务器配置选项内所指定的值。如果可用内存比执行查询所需的指定最小内存多,则只要查询能对多出的内存加以有效的利用,就可以使用多出的内存。
n I/O?子系统
下列服务器配置选项可用于配置?I/O?的使用并影响服务器性能:?
· recovery?interval?
recovery?interval?服务器配置选项控制?Microsoft??SQL?Server??2000?在每个数据库内发出检查点的时间。默认情况下,SQL?Server?确定执行检查点操作的最佳时间。然而,若要确定这是否为适当的设置,需要使用?Windows?NT?性能监视器监视数据库文件上的磁盘写入活动。导致磁盘利用率达到?100%?的活动尖峰值会妨害性能。若更改该参数以使检查点进程较少出现,通常可以提高这种情况下的总体性能。但仍须继续监视性能以确定新值是否已对性能产生正面影响。
· tempdb
ms建议tempdb应放在单独的io速度快的硬盘上,而对db的自动增长属性,需细致考虑,如需字段增长应考虑自动增长的幅度,不要过小因为我们的系统大量的使用了临时表,初始大小设为200M为宜。?
· 事务日志
建议将日志和数据文件分开存放在单独的磁盘上以减少竞争。合理设置日志文件的初始大小,不能太小;日志的增长百分比;尽量手工收缩日志,避免系统在正忙的时候收缩日志避免不必要的磁盘I/O速度上的开销。
· 监视死锁
检查应用,可使用一些monitor事件查看器来监测log?space的使用情况,lock状况,有没有造成系统死锁等??

n 操作系统性能参数· 建议使用NTFS格式的文件系统,64K扩展盘区大小的磁盘最佳。千万不要将数据文件和日志文件放在压缩文件系统中· 虚拟内存Windows?2000?虚拟内存大小应基于计算机上并发运行的服务进行配置。运行?Microsoft?SQL?Server??2000?时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的?1.5?倍。上面列出了影响SQL?Server的一些主要因素,实际上远不止这些。操作系统的影响也很大,在Windows?NT下,文件系统的选择、网络协议、开启的服务、SQL?Server的优先级等选项也不同程度上影响了SQL?Server的性能。  影响性能的因素是如此的多,而应用又各不相同,找出1个通用的优化方案是不现实的,在系统开发和维护的过程中必须针对运行的情况,不断加以调整。事实上,绝大部分的优化和调整工作是在与客户端独立的服务器上进行的,因此也是现实可行的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读