最近实施一个中型的门户网站,在项目编码已经结束测试完成后,发布服务器上,因为以前用到只有SQl2000,当前基于开发的SQL2005+VS2008,环境是.NET 3.5版本,这个时候就出现许多问题.一一描述并提供解决方案:
A:版本问题—这是你第一个必须面对的并且是核心问题:
因为在实施中用到Row_Number()函数进行简单的数据分页,很明显只有SQl2005以上版本才支持,首先让我们来看看数据库版本的具体划分:
版本获得方法如下:
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理论上都是可以的,
在多版本下建立SQl2005一个新的数据库实例后,鉴于项目需要建议开辟新的通信端口,链接字符窜写法如下:
(1):在 "程序—>配置工具—>SQlServer配置管理器"运行起来:选择SQl Native Client配置下客户端协议 如图显示:
(2)选中Tcp/ip选择属性配置 截图如下:
修改完成后需要重新关闭再次启动SQlserver服务配置才有效,通过程序连接数据库SQl2005,链接正常.
A:版本问题—这是你第一个必须面对的并且是核心问题:
因为在实施中用到Row_Number()函数进行简单的数据分页,很明显只有SQl2005以上版本才支持,首先让我们来看看数据库版本的具体划分:
版本获得方法如下:
1
--
获得当前数据库版本方法:
2
A:
Select
@@Version
—返回当前数据版本号(微软定义)
3
--
完整获得版本信息
4
B:
SELECT
SERVERPROPERTY(
'
productversion
'
), SERVERPROPERTY (
'
productlevel
'
), SERVERPROPERTY (
'
edition
'
)
5
上述获得完整版本信息:
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
(
1
)产品版本编号(
'
productversion
'
)(例如:
9.00
.
1399.06
或者8.
00.534
)
8
(
2
)产品级别(
'
productlevel
'
)(例如:RTM正式版)
9
(
3
)版本(
'
edition
'
)(例如:Enterprise Edition
-
企业版)
10
SQL2000版本号查询结果:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ab8c6841aa1341a8c8b474fe6bd16fca.jpeg)
SQl2005版本号查询结果:
![](https://i-blog.csdnimg.cn/blog_migrate/981d42fd89facb98d1d6b66971f42fdd.jpeg)
在微软官方上看到版本区分如下:SQL2000和SQL2005版本号对比如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6e269d2b3bd665fe87b03287b7dbdf37.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/583086a1a037a050c7f3d347795bd0b0.jpeg)
安装SQL2005时如果具有引导程序问题不大,如果压缩包中只是Server和Tools文件夹时:需要注意安装顺序非常重要,应该首先安装Tools目录下然后在安装Server目录服务器引擎,如果只安装Tools客户端工具,没有安装Server目录下数据引擎情况下,会导致sql2005默认链接的是SQL2000数据引擎也就是8.0版本,导致Row—Nummber等函数不支持的现象发生.问题关键是安装SQL 9.0版本数据库引擎既Server目录下,并重新生成一个新的数据库实例而非默认实例:
![](https://i-blog.csdnimg.cn/blog_migrate/3fee96d4336980ed1bad2b256b602795.png)
这样做主要目的是在SQlClint容易区分不同版本下不同的数据库实例,链接时取新建立的数据库实例引擎,执行T—SQL语句正确执行,查看版本是9.0,这点是很有必要,如果SQL语句出现不可预料的错误,数据引擎版本问题是很隐蔽而关键的问题,这也是我不断在前面不断区分和识别数据版本的用心所在。
安装完SQL2005后,开始准备用SQL2000客户端工具连接SQL2005,结果报告不能用SQL2000客户端工具连接,只能用SQL2005客户端工具连接,后证明SQL2005客户端工具可以同时连接SQL2000和SQL2005。
B:多版本下链接数据库
当数据库建立后另外一个问题就是多版本下链接数据库:其实在同一台机器上同时安装多个版本的数据包括orcal理论上都是可以的,
1
--
默认链接字符串
2
public
static
readonly
string
connString
=
"
Data Source=.;Initial Catalog=IssueDB;Uid=sa;Pwd=chen
"
;
//
可以通过配置文件读取,请查MSDN
如上链接会报错的,因为先安装的SQL2000后装上SQL2005,DataSource通过.默认来指向的是SQL2000数据库引擎,回报出无法找到IssueDB这个数据库对象,同样默认数据库通信端口1433也被SQL2000占用,后来通过官方资料证明:SQL2000服务器用的端口始终是1433端口,而SQL2005使用的是动态端口,
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
在多版本下建立SQl2005一个新的数据库实例后,鉴于项目需要建议开辟新的通信端口,链接字符窜写法如下:
1
--
开辟一个新端口(当然在使用前应测试该端口是否被占用)连接字符窜
2
public
static
readonly
string
connString
=
"
Data Source=5A40BDACC26449F\\SQLEXPRESS:5048;Initial Catalog=IssueDB;Integrated Security=True
"
;
3![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
//
5048为新开辟端口
5
6
SQl2005配置步骤如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
(1):在 "程序—>配置工具—>SQlServer配置管理器"运行起来:选择SQl Native Client配置下客户端协议 如图显示:
![](https://i-blog.csdnimg.cn/blog_migrate/235c01210417696deb65380a1fa598cf.jpeg)
(2)选中Tcp/ip选择属性配置 截图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/315ebdc8d1f9e3df30f99ac0a1f7b661.jpeg)
修改完成后需要重新关闭再次启动SQlserver服务配置才有效,通过程序连接数据库SQl2005,链接正常.