求mssql2000转换成mssql2005的最佳方法

作者&投稿:乌疮 (若有异议请与网页底部的电邮联系)
一般的数据迁移是没有什么问题,但是要注意你的存储过程或函数中如果应用到了系统表或系统视图,要注意修改成对应在SQL2005下的schema名称(sys)!

还有xp_cmdshell在SQL2005中已经作为高级选项了,不能够直接使用。
要是原来的程序中用到了,在2005中使用xp_cmdshell前请先打开高级选想开关:
回答者:yzh4492767 - 助理 二级 5-24 09:31

其实就是附加数据库

由于有多个库,所以单个附加比较麻烦.

使用存储过程.sp_attach_db 说明如下.
Transact-SQL 参考
sp_attach_db
将数据库附加到服务器。

语法
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]

参数
[@dbname =] 'dbname'

要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。

[@filename1 =] 'filename_n'

数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。

返回代码值
0(成功)或 1(失败)

结果集


注释
只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 Create DATABASE。

如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。

权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。

示例
下面的示例将 pubs 中的两个文件附加到当前服务器。

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

请参见

Create DATABASE

sp_attach_single_file_db

sp_detach_db

sp_helpfile

sp_removedbreplication

系统存储过程

步骤:
1.在要升级的SQL2000 Master库中执行如下语句

--EXEC sp_attach_db @dbname = N'pubs',
-- @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
-- @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

--下面的语句是按上面的来做的

select 'exec sp_attach_db @dbname=N'''+name+''', @filename1=N'''+filename+''',@filename2=N'''+filename+''''
from sysdatabases

2.将查询出来的内容全部复制,删除不需要附加的表及系统表.

3.修改或替换文件名和路径

5.将改后的数据库脚本在SQL2005的master表里执行一下. 附加就完了.

6.删除SQL2005中新表的数据库登录名.添加新的登录名.

附:
2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成
回答者:wkghnn - 助理 二级 5-24 09:39

2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成

如果出现错误,那么看看错误所对应的语句是否正确,或者把脚本分几段执行调试...

希望我的回答对你有帮助~~~~~~!!!~~~~~~
回答者:kinglin123 - 魔法师 四级 5-24 09:39

. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库

2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成

如果出现错误,那么看看错误所对应的语句是否正确,或者把脚本分几段执行调试...

希望我的回答对你有帮助~~~~~~!!!~~~~~~

其实就是附加数据库

由于有多个库,所以单个附加比较麻烦.

使用存储过程.sp_attach_db 说明如下.
Transact-SQL 参考
sp_attach_db
将数据库附加到服务器。

语法
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]

参数
[@dbname =] 'dbname'

要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。

[@filename1 =] 'filename_n'

数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。

返回代码值
0(成功)或 1(失败)

结果集


注释
只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 Create DATABASE。

如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。

权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。

示例
下面的示例将 pubs 中的两个文件附加到当前服务器。

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

请参见

Create DATABASE

sp_attach_single_file_db

sp_detach_db

sp_helpfile

sp_removedbreplication

系统存储过程

步骤:
1.在要升级的SQL2000 Master库中执行如下语句

--EXEC sp_attach_db @dbname = N'pubs',
-- @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
-- @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

--下面的语句是按上面的来做的

select 'exec sp_attach_db @dbname=N'''+name+''', @filename1=N'''+filename+''',@filename2=N'''+filename+''''
from sysdatabases

2.将查询出来的内容全部复制,删除不需要附加的表及系统表.

3.修改或替换文件名和路径

5.将改后的数据库脚本在SQL2005的master表里执行一下. 附加就完了.

6.删除SQL2005中新表的数据库登录名.添加新的登录名.

附:
2005转到2000的步骤
1. 生成for 2000版本的数据库脚本
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- 勾选"为所选数据库中的所有对象编写脚本"
-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"
-- 其他选项根据需要设置
-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库
在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库
-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成

一般的数据迁移是没有什么问题,但是要注意你的存储过程或函数中如果应用到了系统表或系统视图,要注意修改成对应在SQL2005下的schema名称(sys)!

还有xp_cmdshell在SQL2005中已经作为高级选项了,不能够直接使用。
要是原来的程序中用到了,在2005中使用xp_cmdshell前请先打开高级选想开关:

. 将数据从2005导到2000
2005 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 导出数据
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库

请各位给个数据库降级(mssql2008转2000或2005)的最佳方案~

在对象资源管理器(没有的话按F8) 连接到你的2008实例 右键你要降级的数据库 任务 生成脚本 在随后出现的脚本中, 单击"下一步", 直到"选择数据库"步骤, 确定数据库是你要降级的数据库, 并勾选"为所选数据库中的所有对象生成脚本" 单击"下一步", 把"表/视图选项"中的所有属性都设置为"TRUE", "常规选项"中, 把"编写创建数据库的脚本"设置为TRUE, "为服务器版本编写脚本"设置为"SQL Server 2005"或者其他版本 单击下一步直到完成

请加

请问如何在Java里,怎样使用ADO访问SQL Server 2000 ,希望能够解释清楚整 ...
答:加载SQL Server数据库JDBC驱动,其代如下所示:String mssyql_driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";Class.forName(mssql_driver);

512m内存的vps装sqlserver (mssql)可以不?
答:512M 内存基本上都跑不起MSSQL数据库 建议内存在1G以上可以跑MSSQL

SQL卸载后,安装出现程序集问题,怎么办呀,查百度查一天了,也没解决...
答:HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServer HKEY_LOCAL_MACHINESOFTWAREMicrosoft Microsoft SQLServer HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSQLServer HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSQLSERVERAGENT HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSS... 然后单击【运行】按钮,SQL...

SQL Server 2000无法卸载
答:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSGATHERVER HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSGTHRSVC HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSINDEX (5) 如果要卸载的是命名实例,则在相应的注册表键的MSSQLServer,SQLSERVERAGENT和MSSQLServerADHelper后加上...

python3连接MSSQL数据库 中文乱码怎么解决
答:以前用php连mssqy时也经常出现中文乱码(中文变问号)的问题,那时就明白是编码没设置好导航,现在的Python连mssql数据库也同样出现这问题,问题一样,解决的办法当然也会相似,现在我们来看看解决方法。python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的...

Win7系统下彻底删除卸载sql2005的方法
答:[-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSQLServerADHelper][-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSQLSERVERAGENT][-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSFtpsvc][-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSCNTRS][-HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices...

SQL怎样才能完全卸载?
答:第二,注册表信息的删除。【开始】->【运行】->输入regedit,点开HKEY_LOCAL_MACHINE->software->microsoft,找到microsoft SQL Server和MSSQLServer,如下:右击这两个文件选择删除,关闭注册表,然后重新启动电脑就可以了。安装SQLServer 2000的时候经常提示有服务已经挂起,需要重新启动机器的解决办法。打开注册表...

windows 无法启动 SQL Server (MSSQLSERVER) 服务(位于本地计算机上...
答:如果是的话,可能是密码不对出问题了,在控制面版服务管理器下更改MSSQLSERVER服务的服务账号信息(右键属性你就会看到),改成你现在的用户名和密码...我的就这样解决了~ 本回答由网友推荐 举报| 答案纠错 | 评论(1) 14 0 其他回答 确定当前的登录用户是否具有管理员权限?可能是权限不够。 siyixin | 发布于...

砺青虚拟主机管理系统安全设置!
答:mssql独立用户:1,建立用户msssqluser 2,把mssql安装盘及安装目录加上mssqlusr用户读权限,mssql的Data目录及其它存放数据库文件或MSSQL需要放入的目录,如D:\DB,D:\winiis\server\backup目录加上mssql的完全控制权限3,mssql服务的启动帐号设置成mssqluser server-U独立用户:1,建立用户ftpuser 2,把d...

pb连接SQL2000代码的解释
答:7.需要检查的另一个组件是 Microsoft 数据访问组件 (MDAC) 安装程序,它作为 SQL Server 2000 安装程序的一部分启动。SQL Server 2000 安装程序会安装 MDAC 2.6。MDAC 安装程序会创建名为 Dasetup.log 的单独的日志文件;您可以查看此日志文件并确保 MDAC 安装程序没有出现问题。如果在不行那就,上...