GVKun编程网logo

sqlservier2005转成sqlserver2000中出现的问题(WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY])

9

在这篇文章中,我们将带领您了解sqlservier2005转成sqlserver2000中出现的问题的全貌,包括WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]的相关情况。同时,

在这篇文章中,我们将带领您了解sqlservier2005转成sqlserver2000中出现的问题的全貌,包括WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]的相关情况。同时,我们还将为您介绍有关MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了、SQL Server2005与SQLServer2008并存时, 怎样连接到2008、sqlserver 2005 express SQLServer2005_SSMSEE 安装出错,提示29506、SqlServer2000 类似sqlserver2005的 rownumber() 函数的知识,以帮助您更好地理解这个主题。

本文目录一览:

sqlservier2005转成sqlserver2000中出现的问题(WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY])

sqlservier2005转成sqlserver2000中出现的问题(WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY])

 公司的系统需要从sql2005转移到sql2000上,只需要表结构,主要的做法就是通过sqlserver提供的"任务/生成脚本"的向导将表结构导成脚本文件。问题是sql2005提供的导出工具虽然也兼容sqlserver 2000,但是脚本文件中包含了sqlserver 2000不支持的语句,如“WITH (IGnorE_DUP_KEY = OFF) ON [PRIMARY]”,在sqlserver2000的查询分析器中执行会报出错误。原本想了两种方法解决这个问题,第一个就是一个一个替换成sqlserver2000支持的语句,但是因为表的数量太大,就放弃了;第二种方法就是自己写一个工具,从sql2005中读出表结构,生成sql2000语法的脚本,这样也能解决这个问题,但是因为时间很紧张,没有时间去研究sql20005与sql2000的数据类型的差异。最后在经过几个小时的搜索之后,终于找到微软的网站上找到DatabasePublishingWizard工具,下载网址是http://www.microsoft.com/downloads/details.aspx?familyid=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en,Microsoft sql Server Database Publishing Wizard 1.1工具和sql2005的向导工具很类型,不过没有sql2005向导工具的可选项多,不过还是可以的,至少生成的表的创建脚本在sql2000中执行没有问题。希望能够对以后出现同样问题的朋友有所帮助,减少他们的解决问题的时间。

MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了

MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了

今天遇到非常蛋疼的问题 如下:

 

我的系统主库是postgresql的 另外还连接了两个MSsql的数据库 先前客户说是2008R2的

我的系统会定时的去MSsql的数据库同步数据到postgresql

 

于是我在配置文件里面两个MSsql的配置都是

driver=com.microsoft.sqlserver.jdbc.sqlServerDriver url=jdbc:sqlserver://ip:port;database=dbname username=sa password=******


 

然后客户说有一台数据库的数据同步不了数据,并且数据库是MSsql2000的

 

我听到2000的第一反应就是以前数据库用2000的时候连接字符串和2005/2008的不一样

于是把连接字符串改成了

 

driver=com.microsoft.jdbc.sqlserver.sqlServerDriver url=jdbc:microsoft:sqlserver://ip:port;database=dbname username=sa password=******

 

然后我记得以前2000的jar包是有3个的

不知道我现在项目里用的这个sqljdbc4.jar能连接2000的数据库不

 

于是google搜 sqlserver2000 jar

转到了微软的

http://www.microsoft.com/en-us/download/details.aspx?id=1511

下载了一个README.TXT的文本

文本的大意是说不再提供sqlserver2000的jar下载了

然后给了一个新的下载地址

http://msdn.microsoft.com/data/jdbc

 

在里面我看到一jar支持 2000 2005 2008 2008R2

 

于是下载下来sqljdbc_3.0.1301.101_chs.tar.gz

解压后在目录发现有两个jar:

sqljdbc.jar  和 sqljdbc4.jar

这两个jar的区别在于

sqljdbc.jar 适合jre1.5的环境

sqljdbc4.jar适合jre1.6的环境

 

 

因为我是1.6 所以用sqljdbc4.jar

 

因为MSsql2000的数据连接是

com.microsoft.jdbc.sqlserver.sqlServerDriver

所以我用rar打开sqljdbc4.jar查看该jar的文件结构

但是发现com.microsoft 的路径下没有jdbc这个目录

只有sqlserver这个目录

 

我就奇怪了如果是没有jdbc这个目录,那么肯定2000是无法驱动的

然后一试 果然提示找不到驱动

 

我就纳闷了 微软不是说了此jar包支持2000 2005 2008 2008R2么

怎么不行呢...

 

纳闷了好久

然后突然想,会不会是2000 2005 2008 2008R2的连接字符串都是一样的了呢?

 

于是我把2000的链接字符串也改成


 

driver=com.microsoft.sqlserver.jdbc.sqlServerDriver url=jdbc:sqlserver://ip:port;database=dbname username=sa password=******

 

这样就对了

 

你妹的 原来是这样

 

 

大家伙如果有这个问题的切忌啊...

2000 2005 2008 2008R2的链接字符串都一样了 而且只需要一个jar包就行了


 

 

另外附上查看sqlserver2000的版本的方法

方法一:

在查询分析器中输入“Select @@Version”并运行,查看运行结果,对照便知版本。

8.00.194 -——————sql Server 2000 RTM
8.00.384 -——————(SP1)
8.00.534 -——————(SP2)
8.00.760 -——————(SP3)
8.00.2039 -——————(SP4) 

方法二:

运行sql SERVER服务管理器,在任务栏小托盘处,右键单击管理器图标,选“关于”,在弹出的窗口中,对照上面的信息便知

方法三:

在添加或删除程序中查看sql Server的支持信息,可直接查看到版本号(具体方法略)

补充说明:sql SERVER个人版,如果未打SP4补丁,是不会在1433端口监听的,即除本机外,其他电脑无法联入该数据库。

 

 

再附上一个把MSsql的表数据查询成 insert into格式的函数

 

USE [db] GO /****** Object: StoredProcedure [dbo].[proc_insert] Script Date: 12/05/2012 17:18:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER proc [dbo].[proc_insert] (@tablename varchar(256)) as begin set nocount on declare @sqlstr varchar(4000) declare @sqlstr1 varchar(4000) declare @sqlstr2 varchar(4000) select @sqlstr='select ''insert '+@tablename select @sqlstr1='' select @sqlstr2=' (' select @sqlstr1= ' values ( ''+' select @sqlstr1=@sqlstr1+col+'+'',''+',@sqlstr2=@sqlstr2+name +',' from (select case -- when a.xtype =173 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.length*2+2)+'),'+a.name +')'+' end' when a.xtype =127 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(20),'+a.name +')'+' end' when a.xtype =104 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(1),'+a.name +')'+' end' when a.xtype =175 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''','''''''''''')' + '+'''''''''+' end' when a.xtype =61 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),'+a.name +',121)'+ '+'''''''''+' end' when a.xtype =106 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),a.xprec+2)+'),'+a.name +')'+' end' when a.xtype =62 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),2)'+' end' when a.xtype =56 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(11),'+a.name +')'+' end' when a.xtype =60 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end' when a.xtype =239 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''''''')' + '+'''''''''+' end' when a.xtype =108 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),'+a.name +')'+' end' when a.xtype =231 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''''''')' + '+'''''''''+' end' when a.xtype =59 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(23),2)'+' end' when a.xtype =58 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'convert(varchar(23),121)'+ '+'''''''''+' end' when a.xtype =52 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(12),'+a.name +')'+' end' when a.xtype =122 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(22),'+a.name +')'+' end' when a.xtype =48 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar(6),'+a.name +')'+' end' -- when a.xtype =165 then 'case when '+a.name+' is null then ''NULL'' else '+'convert(varchar('+convert(varchar(4),'+a.name +')'+' end' when a.xtype =167 then 'case when '+a.name+' is null then ''NULL'' else '+'''''''''+'+'replace('+a.name+','''''''''''')' + '+'''''''''+' end' else '''NULL''' end as col,a.colid,a.name from syscolumns a where a.id = object_id(@tablename) and a.xtype <>189 and a.xtype <>34 and a.xtype <>35 and a.xtype <>36 )t order by colid select @sqlstr=@sqlstr+left(@sqlstr2,len(@sqlstr2)-1)+') '+left(@sqlstr1,len(@sqlstr1)-3)+')'' from '+@tablename -- print @sqlstr exec( @sqlstr) set nocount off end


 Exec proc_insert NewDataTable;

 执行 Exec proc_insert TableName;

 

效果如下图所示

 

SQL Server2005与SQLServer2008并存时, 怎样连接到2008

SQL Server2005与SQLServer2008并存时, 怎样连接到2008

启动2008, 但是连接中却显示的是sql server 9.0, 这里是因为没有连接好. Server name: 对应的下拉列表中, 拉到最底下, Browse for more, / Local Servers / 数据库引擎 下面就有你本机上所有的实例名.。 选择 计算机名\SQL2008 , 就可以连接到了。 注: 200

启动2008, 但是连接中却显示的是sql server 9.0, 这里是因为没有连接好.

Server name: 对应的下拉列表中, 拉到最底下, "Browse for more", / "Local Servers" / "数据库引擎" 下面就有你本机上所有的实例名.。

选择 计算机名\SQL2008 , 就可以连接到了。

注: 2008连接之后, 连接中应该显示 SQL Server 10.0

sqlserver 2005 express SQLServer2005_SSMSEE 安装出错,提示29506

sqlserver 2005 express SQLServer2005_SSMSEE 安装出错,提示29506

由于sqlserver 2005 express 默认没有可视化管理工具,所以要装Microsoft sql Server Management             。。

从          http://download.microsoft.com/download/1/1/0/110d908f-c445-4523-b939-220c7d135f3d/sqlServer2005_SSMSEE.msi

下载sqlServer2005_SSMSEE.msi安装,我的是win7 32bit 系统,可是提示29506错误。

 

下面提供解决方案:

假设sqlServer2005_SSMSEE.msi是在D:/sqlServer2005_SSMSEE.msi.

点击“开始”,在搜索中输入“cmd",后然在出来的”cmd.exe"上右击,“以管理员身份运行”,输入D:/sqlServer2005_SSMSEE回车

然后一直下一步安装就可以了。

SqlServer2000 类似sqlserver2005的 rownumber() 函数

SqlServer2000 类似sqlserver2005的 rownumber() 函数

rownumber() 是sqlserver2005新增加的一个函数,主要是用于解决表排序的序列号的问题。而sqlserver2000 没有这样的函数,那遇到这样的情况我们怎么解决呢? 如下: sqlserver2005 : SELECT row_number() OVER (ORDER BY t .AgentIdentify ASC, t .AgentLevel

rownumber() 是sqlserver2005新增加的一个函数,主要是用于解决表排序的序列号的问题。而sqlserver2000 没有这样的函数,那遇到这样的情况我们怎么解决呢?

 

如下:

sqlserver2005 :    SELECT     row_number() OVER (ORDER BY t .AgentIdentify ASC, t .AgentLevelRate DESC) AS row
, t .* FROM (SELECT  top 20 * FROM    AgentLevel  ORDER BY AgentIdentify ASC, AgentLevelRate DESC) t

 

 

sqlserver2000:   SELECT     (select count(*) from AgentLevel where AgentLevelRate >=t.AgentLevelRate) AS row
, t .* FROM (SELECT  top 20 * FROM    AgentLevel  ORDER BY AgentIdentify ASC, AgentLevelRate DESC) t

 

看出我们只需要用 自连接 便可以解决 sqlserver2000 没有rownumber()的问题。

我们今天的关于sqlservier2005转成sqlserver2000中出现的问题WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]的分享已经告一段落,感谢您的关注,如果您想了解更多关于MSSQL/SQLSERVER 2000 2005 2008 2008R2 jar包驱动问题 一个sqljdbc4.jar就OK了、SQL Server2005与SQLServer2008并存时, 怎样连接到2008、sqlserver 2005 express SQLServer2005_SSMSEE 安装出错,提示29506、SqlServer2000 类似sqlserver2005的 rownumber() 函数的相关信息,请在本站查询。

本文标签: