服务器SQl2000和SQl2005版本不同带来一系列问题解决方案

简介:

最近实施一个中型的门户网站,在项目编码已经结束测试完成后,发布服务器上,因为以前用到只有SQl2000,当前基于开发的SQL2005+VS2008,环境是.NET 3.5版本,这个时候就出现许多问题.一一描述并提供解决方案:

A:版本问题—这是你第一个必须面对的并且是核心问题:
因为在实施中用到Row_Number()函数进行简单的数据分页,很明显只有SQl2005以上版本才支持,首先让我们来看看数据库版本的具体划分:
版本获得方法如下:

1--获得当前数据库版本方法:
2A:Select @@Version —返回当前数据版本号(微软定义)
3--完整获得版本信息
4B:SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
5上述获得完整版本信息:
6
7(1)产品版本编号('productversion')(例如:9.00.1399.06 或者8.00.534)
8(2)产品级别('productlevel')(例如:RTM正式版)
9(3)版本('edition')(例如:Enterprise Edition-企业版)

SQL2000版本号查询结果:

SQl2005版本号查询结果:

在微软官方上看到版本区分如下:SQL2000和SQL2005版本号对比如下:

安装SQL2005时如果具有引导程序问题不大,如果压缩包中只是Server和Tools文件夹时:需要注意安装顺序非常重要,应该首先安装Tools目录下然后在安装Server目录服务器引擎,如果只安装Tools客户端工具,没有安装Server目录下数据引擎情况下,会导致sql2005默认链接的是SQL2000数据引擎也就是8.0版本,导致Row—Nummber等函数不支持的现象发生.问题关键是安装SQL 9.0版本数据库引擎既Server目录下,并重新生成一个新的数据库实例而非默认实例:
这样做主要目的是在SQlClint容易区分不同版本下不同的数据库实例,链接时取新建立的数据库实例引擎,执行T—SQL语句正确执行,查看版本是9.0,这点是很有必要,如果SQL语句出现不可预料的错误,数据引擎版本问题是很隐蔽而关键的问题,这也是我不断在前面不断区分和识别数据版本的用心所在。
安装完SQL2005后,开始准备用SQL2000客户端工具连接SQL2005,结果报告不能用SQL2000客户端工具连接,只能用SQL2005客户端工具连接,后证明SQL2005客户端工具可以同时连接SQL2000和SQL2005。

B:多版本下链接数据库
当数据库建立后另外一个问题就是多版本下链接数据库:其实在同一台机器上同时安装多个版本的数据包括orcal理论上都是可以的,

1--默认链接字符串
2public static readonly string connString = "Data Source=.;Initial Catalog=IssueDB;Uid=sa;Pwd=chen";//可以通过配置文件读取,请查MSDN

如上链接会报错的,因为先安装的SQL2000后装上SQL2005,DataSource通过.默认来指向的是SQL2000数据库引擎,回报出无法找到IssueDB这个数据库对象,同样默认数据库通信端口1433也被SQL2000占用,后来通过官方资料证明:SQL2000服务器用的端口始终是1433端口,而SQL2005使用的是动态端口,
在多版本下建立SQl2005一个新的数据库实例后,鉴于项目需要建议开辟新的通信端口,链接字符窜写法如下:

1--开辟一个新端口(当然在使用前应测试该端口是否被占用)连接字符窜
2public static readonly string connString = "Data Source=5A40BDACC26449F\\SQLEXPRESS:5048;Initial Catalog=IssueDB;Integrated Security=True";
3
4//5048为新开辟端口

SQl2005配置步骤如下:
(1):在 "程序—>配置工具—>SQlServer配置管理器"运行起来:选择SQl Native Client配置下客户端协议 如图显示:

(2)选中Tcp/ip选择属性配置 截图如下:

修改完成后需要重新关闭再次启动SQlserver服务配置才有效,通过程序连接数据库SQl2005,链接正常.
 


本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765547


相关文章
|
11月前
|
SQL Apache Windows
Windows服务器80端口被占用的全面解决方案
在服务管理器中启动apache2服务,即可正常使用80端口。若系统中还安装了其他微软产品如sql等,也可尝试停止其服务进行测试,但请注意,SQL通常不会使用80端口,因此一般不会受到影响。以上就是关于80端口被system占用的详细解决方法,希望对你有所帮助。
|
8月前
|
Shell Linux 网络安全
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
1380 3
宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
|
9月前
|
运维 监控 安全
EventLog Analyzer:高效的Web服务器日志监控与审计解决方案
ManageEngine EventLog Analyzer是一款企业级Web服务器日志监控与审计工具,支持Apache、IIS、Nginx等主流服务器,实现日志集中管理、实时威胁检测、合规报表生成及可视化分析,助力企业应对安全攻击与合规挑战,提升运维效率。
437 1
|
9月前
|
存储 弹性计算 人工智能
阿里云服务器可以免费试用吗?云产品和解决方案免费试用活动及常见问题介绍
阿里云服务器可以免费试用吗?当然是可以试用的,完成实名认证的云服务器ECS新用户,可免费试用3个月。不仅云服务器可以试用,云数据库等其他热门云产品也可以试用,2025年阿里云还额外推出了解决方案免费试用活动,本文为大家介绍云产品和解决方案免费试用活动及常见问题,以供了解参考。
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
12月前
|
Ubuntu Linux 数据中心
阿里云服务器纯净版系统解析:公共镜像版本特性与选择指南参考
当我们选购阿里云服务器时,系统镜像的选择至关重要。阿里云为用户提供了多种系统镜像,包括公共镜像、自定义镜像、共享镜像、云市场镜像和社区镜像。其中,公共镜像为纯净版系统,这些系统皆已正版授权,旨在为ECS实例上的应用程序提供安全、稳定的运行环境。本文将为大家详细汇总阿里云服务器纯净版系统及最新的系统版本,以供大家了解和选择。
|
10月前
|
Ubuntu 安全 小程序
服务器版本的CentOS和Ubuntu哪个更适合你?
但是以上的比较并不说明Ubuntu是不稳定的或者是不安全的,只是以上比较过程中,在稳定性方面Ubuntu稍微逊色了一点。由于Ubuntu在个人桌面电脑的使用率远远高于CentOS,用Ubuntu搭建服务器,如果遇到什么问题,寻找解决方案相对比较容易,这让Ubuntu在选择方面更优于CentOS。如果你是一个初学者,那么毫无疑问Ubuntu是更适合的选择。如果你正在经营自己的公司,在这两者之间,CentOS会更好一些。
|
11月前
|
存储 Ubuntu 安全
如何在服务器上快速安装 ERPNext 最新版本?
ERPNext 是一款开源且功能全面的企业资源规划软件,在企业信息化管理中广泛应用。本文介绍如何通过 Websoft9 控制台安装其最新版本,以提升部署效率。内容涵盖安装前的服务器准备、Websoft9 控制台登录,到通过应用市场安装 ERPNext 的详细步骤,以及安装后的验证与基础配置。帮助企业快速搭建稳定高效的信息化管理平台,满足财务、采购、销售、库存等多方面业务需求,助力企业降本增效,实现可持续发展。
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
880 11