一次特殊的SQL Server安装奇遇

 更新时间:2016年11月25日 16:40  点击:1502
  最近,我遭遇了一次奇特的SQL Server安装经历,在这里把它写出来,和朋友们一起学习,探讨。
  我的系统是WIN2000标准服务器版,第一次安装系统时候能够正确安装和运行SQL Server2000。由于最近系统中安装的Office中的ACCESS文件数据库表无法打开,在多次重新安装Office系统无效的情况下,只好重新安装了WIN2000操作系统,安装操作系统很顺利。
  一、遭遇:
  我安装了Office2000和Borland Delphi7,这时能够正常的运行和管理Office文件了,Delphi也能正常运行。然后我开始重新安装SQL Server2000,但是当进入"本地计算机"后,系统弹出一个警告信息框,显示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机!"。我多次重新启动也不行。
  二、过程:
  我回忆在重新安装操作系统以前,我没有正常卸载SQL Server2000。由于重新安装了操作系统,只好手工把安装SQL Server的文件夹全部删除,同时运行注册表,在注册表中删除SQL Server的所有相关项。重新启动安装SQLServer,可仍然出现上面的警告信息。我反复的在注册表中查找SQL Server相关项并用WINDOWS优化大师清理,重新启动多次。故障仍然存在。
  我分析可能是有程序与SQL Server的安装程序发生冲突。重新启动系统时候我按下F8键,选择"安全模式"进入系统,运行SQL Server的安装程序,这时以前出现的警告框信息没有了,便一路NEXT,复制和安装文件,但是到了配置数据服务器的时候,便发现运行的时间很长,当时正值要下班了,我想反正下班了,干脆就让它继续"配置"吧,便让机器运行着,决定第二天上班时候来看结果┉┉
  第二天上班时候,我直奔电脑,结果发现电脑还在"配置服务器",十多个小时都未能配置好,看来安全模式也不行,只好按正常模式重新启动计算机。
  进入控制面板-》添加/删除程序,这时我看到已安装的项目有:Borland Delphi7、Office2000、金山词霸2002专业版,我想到是不是要这些已安装的程序与SQL Server的安装程序发生冲突,我便逐个删除上面的程序,每删除一个就重新安装SQL Server,以发现到底是哪一个程序发生冲突。结果还是没有安装成功。难道真要把硬盘FORMAT了?由于我当时刚好没有WIN2000的启动光盘,因单位的局域网的所有的计算机都是方正电脑文祥系列,电脑的配置都是一样的,我便把一块也安装了WIN2000服务器版和SQL Server2000的硬盘作为主盘安装到我的电脑中,我的电脑的硬盘作为从盘,主盘和从盘都已经分为C、D、E、F四个区。用主盘引导系统,进入"我的电脑",可以看到盘符的分配顺序是C、D、E、F、G、H、I。我便对G区进行了格式化,然后我取下主盘,只安装了从盘,开机重新启动,我看到了WIN2000 Server的启动界面,输入密码,进入了系统。我抱着试试看的心情,再次启动SQL Server2000的安装程序,你说奇怪不奇怪,进入"本地计算机"的时候,按下"NEXT",先前出现的警告信息没有了,系统进入了熟悉的安装界面,我一路NEXT,真是顺啊,一路顺到底,配置服务器,很快的便把SQL Server安装成功了。我真不敢相信自己的眼睛,我进入SQL Server的企业管理器,查看数据库和表,并对表进行操作,一切正常。我在托盘里也欣喜的看到SQL Server服务管理器的图标。
-- 获取指定页的数据
CREATE PROCEDURE GetRecordFromPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@IsCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(100) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @OrderType != 0
begin
set @strTmp = "<(select min"
set @strOrder = " order by [" @fldName "] desc"
end
else
begin
set @strTmp = ">(select max"
set @strOrder = " order by [" @fldName "] asc"
end
set @strSQL = "select top " str(@PageSize) " * from ["
@tblName "] where [" @fldName "]" @strTmp "(["
@fldName "]) from (select top " str((@PageIndex-1)*@PageSize) " ["
@fldName "] from [" @tblName "]" @strOrder ") as tblTmp)"
@strOrder
if @strWhere != ''
set @strSQL = "select top " str(@PageSize) " * from ["
@tblName "] where [" @fldName "]" @strTmp "(["
@fldName "]) from (select top " str((@PageIndex-1)*@PageSize) " ["
@fldName "] from [" @tblName "] where " @strWhere " "
@strOrder ") as tblTmp) and " @strWhere " " @strOrder
if @PageIndex = 1
begin
set @strTmp = ""
if @strWhere != ''
set @strTmp = " where " @strWhere
set @strSQL = "select top " str(@PageSize) " * from ["
@tblName "]" @strTmp " " @strOrder
end
if @IsCount != 0
set @strSQL = "select count(*) as Total from [" @tblName "]"
exec (@strSQL)
GO


  很多企业用户都拥有多台SQL Server 2000服务器,为了使多台数据库服务器上的数据保持一致,我们可以将一台数据库服务器中的某个数据库移动到另外的数据库服务器中。
  下面以两台SQL Server 2000服务器为例(分别用A和B表示),介绍具体操作过程。
  1、前期准备
  首先确保这两台安装了SQL Server 2000服务器的计算机可以互相访问,并且操作者有管理员权限。假设数据库jk只在A中存在,而B中没有此数据库。然后确定两台计算机在一个域中,或者域之间有信任关系。
  提示:如果上面两个条件一个都不能满足,就需要进行如下操作:在“企业管理器”中右击数据库项,选择“属性”,进入“安全性”选项卡,勾选“身份验证”栏中的“SQL Server 和Windows”项。否则sa账号将无法使用。
  2、选择数据源
  在A中右击数据库jk,选择“所有任务→导出数据”,在出现的向导窗口中点击“下一步”,进入“选择数据源”窗口。由于在本文中数据库是在A中,所以我们保持默认设置。
  3、选择目的
  点击“下一步”,进入“选择目的”窗口。在“服务器”栏中选择B的服务器名,由于本文是在B中没有jk数据库的情况下进行操作的,所以我们必须在“数据库”栏中选择“新建”,在出现的窗口(图1)中输入数据库名jk(也可以自由选取)。然后勾选“使用SQL Server身份验证”项,并输入管理员账号和密码。如果没有配置管理员账号,也可以输入用户名sa,密码为空。


图 1

  4、选择复制方式

  在出现的数据库复制选项中有3个选择项(图2),下面分别说明。


图 2

  ① “从源数据库复制表和视图”:将A数据库的表和视图导入到B数据库中,而存储过程等不会被导入。

  ② “用一条查询指定要传输的数据”:这时点击“下一步”后将显示“键入 SQL 语句”对话框,输入SQL 语句,则只有符合条件的记录才可导入到B的数据库中。

  ③“在 SQL Server 数据库之间复制对象和数据”:这时点击“下一步”后将显示“选择要传输的对象”对话框,如果数据的源和目的都是Microsoft SQL Server 数据库,则在此对话框中可以指定要复制的对象和数据。可传输的对象包括表、视图、存储过程、默认值、规则、约束、用户定义的数据类型、登录、用户、角色和索引等。
一、残余数据
当您进行SQL Server 2000日志传送的实验时,也许偶而会中断设定过程。如果真是如此,那么某些资料仍然会存入每台服务器的日志传送资料表,并且影响到后续的日志传送设定动作。为了保证这些剩余资料都会被清除,请确实删除每台服务器msdb数据库内日志传送资料表之相关资料。
错误信息:
Error 14261: The specified primary_server_name.primary_database_name ('N') already exists.
Error 14426: A log shipping monitor is already defined (...)
处理方法:
必须手动执行下面几个存储过程来删除Log Shipping在数据库中记录的信息。
1、sp_delete_log_shipping_primary
删除msdb.dbo.log_shipping_primary表中的Primary Server信息
2、sp_delete_log_shipping_plan
删除Log Shipping计划
3、sp_delete_log_shipping_secondary
删除msdb.dbo.log_shipping_secondaries表中的Secondary Server信息
4、sp_remove_log_shipping_monitor
删除Log Shipping监视从表msdb.dbo.log_shipping_monitor
二、数据库的模式
如果正确设置了Log Shipping,但是没有办法正常执行,在SQL Server的日志中可以看到类似这个信息和界面:
Microsoft (R) SQLMaint Utility (Unicode), Version Logged on to SQL Server 'ZTAO-1' as 'ZTAO-1Administrator' (trusted)
Starting maintenance plan 'LOG_Plan_9' on 2003-9-4 14:42:02
Backup can not be performed on database 'ERPLogShipping'. This sub task is ignored.
Deleting old text reports... 0 file(s) deleted.
End of maintenance plan 'LOG_Plan_9' on 2003-9-4 14:42:02
SQLMAINT.EXE Process Exit Code: 1 (Failed)


可能是你没有正确设置数据库的模式,完整模式。


三、Log文件存放路径

在MSDN上看过一篇文章说,同一台电脑上再次设置Log Shipping时,不要使用相同的目录存放Log文件。这个没有考证过,只提一下,提醒大家!



IUPRG(原作)
本文献给在从sql6.5到sqlserver2000的数据库升级过程中的迷茫的朋友。
笔者有幸碰到这样一个案例:(有一句话叫:困难有多大,幸福就有多大,这不,幸福来了~)
一家电厂,运行着若干应用系统,其中以物资系统最为重要。体系结构,大致是这样的:NT4.0 server 简体中文版 SQL server6.5 英文 (物资系统数据)应用系统用powerbuilder6.0开发,已经运行了5年,数据量大概有300M 左右。随着系统不断的使用,现在需要对现有系统升级,从sql6.5到sqlserver2000 从表面上看似乎是数字的变迁,或者是简单的导入导出就可以了,但是我把它想的太简单了。
针对此升级,我使用了三套方案:
1、在sqlserver6.5及其上用外部工具bcp ... out 命令导出;
用其中的一个表测试,结果导入sqlserver2000
故障1:bcp ...in 提示“字符串数据,右截位”;
故障2:汉字的字段显示乱码;
故障3:有汉字的时间字段格式用bcp in 导入时不能成功。
2、用2000升级向导;

故障1:克服重重困难(要求打补丁,重置登陆方式等)升级完后报告一些不可查看的错误,然后,打开数据库一看,一无所有;

故障2:升级向导无法进行,透明程度高,无法进行错误跟踪。
3、用odbc配置访问sql6.5数据源,然后用sqlserver2000的导入向导;
故障:在更改了90多个新表名后,开始复制,成功了。但是,汉字显示乱码。随后,在2000上重新建立一个latin general bin1 为排序的数据库,再次导入,故障依旧。
经历了一周的反复测试,反复失败,最后决定还是采用第一种的方案比较灵活,先将具体步骤整理一下,以饔读者。
1)在nt server 4.0 机器上 打开sqlserver enterprise manager ,选中要升级的数据库,选中表并且生成创建表的脚本;
2)生成创建存储过程的脚本;
3)如果有视图,也请另存为文本,以备使用;
4)打开isql/w工具,选中待升级的数据库,运行以下语句生成bcp out/in 命令(要不然的话,手动编辑很费劲的):
select 'bcp mydatabase.dbo.' name ' out '
'/DATA/' name '.TXT'
' -Usa -P*** -Sservername -c -C1252'
from mydatabase..sysobjects
where type = 'U'
说明:mydatabase 为数据库名。
'/DATA/' 是运行bcp的目录下的data目录,需要事先建立。
[!--infotagslink--]

相关文章

  • PHP7快速编译安装的步骤

    编译安装非常的简单了我们现在的php版本已经到了php7了,下文小编来为各位介绍一篇关于PHP7快速编译安装的步骤,希望文章能够帮助到各位。 一、安装必要一些依赖 yum...2016-11-25
  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • PHP编译安装后PHP-FPM使用笔记

    PHP-FPM我们相信各位用高版本的php经常使用到了,下面整理了一些关于PHP-FPM的笔记,有兴趣的可进来看看。 今天赶上了123System OPenVZ VPS全场半价的机会,购入了一...2016-11-25
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25
  • vscode安装git及项目开发过程

    这篇文章主要介绍了vscode安装git及项目开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-19
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • SQL Server中row_number函数的常见用法示例详解

    这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • Centos中彻底删除Mysql(rpm、yum安装的情况)

    我用的centos6,mysql让我整出了各种问题,我想重装一个全新的mysql,yum remove mysql-server mysql之后再install并不能得到一个干净的mysql,原来的/etc/my.cnf依然没变,datadir里面的数据已没有任何变化,手动删除/etc/my.cn...2015-03-15
  • SQL Server中执行动态SQL

    本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
  • 在PyCharm中安装PaddlePaddle的方法

    这篇文章主要介绍了在PyCharm中安装PaddlePaddle的方法,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-05
  • C#查询SqlServer数据库并返回单个值的方法

    这篇文章主要介绍了C#查询SqlServer数据库并返回单个值的方法,涉及C#操作SQLServer数据库查询的相关技巧,需要的朋友可以参考下...2020-06-25
  • linux服务器快速卸载安装node环境(简单上手)

    这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • Ubuntu20.04安装cuda10.1的步骤(图文教程)

    这篇文章主要介绍了Ubuntu20.04安装cuda10.1的步骤(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-30
  • SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法

    这篇文章主要介绍了SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法,需要的朋友可以参考下...2020-07-11
  • uni-app从安装到卸载的入门教程

    这篇文章主要介绍了uni-app从安装到卸载的入门教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-15
  • Postman安装与使用详细教程 附postman离线安装包

    这篇文章主要介绍了Postman安装与使用详细教程 附postman离线安装包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-05
  • C#实现Excel表数据导入Sql Server数据库中的方法

    这篇文章主要介绍了C#实现Excel表数据导入Sql Server数据库中的方法,结合实例形式详细分析了C#读取Excel表数据及导入Sql Server数据库的具体操作步骤与相关操作技巧,需要的朋友可以参考下...2020-06-25
  • vs2019安装和使用详细图文教程

    这篇文章主要介绍了vs2019安装和使用详细图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25