SQL2008修改系统表问题

时间:2021-03-17 13:27:22
今天附加数据库时,出现异常代码:1813
在解决过程中遇到修改系统表
update sysdatabases set status = 32768 --该参数为置为紧急状态
where name = '待附加的数据库'
出现:不允许对系统目录进行即席更新。
参考:http://lcj240856742.blog.163.com/blog/static/65675342010952939894/

请问在sql2005和2008环境下还有什么方式实现系统表的数据修改


10 个解决方案

#1


用windows身份试试

#2


sql server 2005 和 sql server 2008 已经不允许直接修改系统表,allow updates 选项已经不再有用。

#3


引用 2 楼 gogodiy 的回复:
sql server 2005 和 sql server 2008 已经不允许直接修改系统表,allow updates 选项已经不再有用。


我来寻求间接修改的方法

#4


转成低版本脚本 修改了再附加。

#5


引用 4 楼 fredrickhu 的回复:
转成低版本脚本 修改了再附加。


2008的数据文件,附加不了了,有什么方式可以转为低版本?

#6


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

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

3. 将数据从2008导到2000 
打开SQL Server 2000的企业管理器 
-- 右键要导入数据的数据库 
-- 任务 
-- 导入数据 
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库 
-- 在"选择数据源"步骤中, 连接到 2005, 并选择源数据库 
-- 在"选择源表和源视图"中, 选择所有的表 
-- 最后完成 

#7


引用楼主 tajear 的回复:
今天附加数据库时,出现异常代码:1813
在解决过程中遇到修改系统表
update sysdatabases set status = 32768 --该参数为置为紧急状态
where name = '待附加的数据库'
出现:不允许对系统目录进行即席更新。
参考:http://lcj240856742.blog.163.com/blog/static/656753420109529398……

系統表,只有在SQL2000或之前版本可以改,sql2005之后是不可以改的

#8


USE [master]
GO
ALTER DATABASE Test SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE Test SET  SINGLE_USER 
GO


直接用語句把DB改為單用戶模式,可執行dbcc修復命令

#9


引用 6 楼 fredrickhu 的回复:
SQL code
2008转到2000的步骤 
1. 生成for 2000版本的数据库脚本 
2008 的manger studio 
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例 
-- 右键要转到2000的库 
-- 任务 
-- 生成脚本 
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库 
-- 勾选"为所选数据库中的所有对象编……


TO 6楼 楼主:
如果是SQL2008转SQL2005会不会有问题,如果有问题,用这种方法可不可以解决呢?

#10


引用 9 楼 liw125008 的回复:
引用 6 楼 fredrickhu 的回复:
SQL code
2008转到2000的步骤
1. 生成for 2000版本的数据库脚本
2008 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- ……


2008-2005也是导脚本。

#1


用windows身份试试

#2


sql server 2005 和 sql server 2008 已经不允许直接修改系统表,allow updates 选项已经不再有用。

#3


引用 2 楼 gogodiy 的回复:
sql server 2005 和 sql server 2008 已经不允许直接修改系统表,allow updates 选项已经不再有用。


我来寻求间接修改的方法

#4


转成低版本脚本 修改了再附加。

#5


引用 4 楼 fredrickhu 的回复:
转成低版本脚本 修改了再附加。


2008的数据文件,附加不了了,有什么方式可以转为低版本?

#6


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

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

3. 将数据从2008导到2000 
打开SQL Server 2000的企业管理器 
-- 右键要导入数据的数据库 
-- 任务 
-- 导入数据 
-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数据库 
-- 在"选择数据源"步骤中, 连接到 2005, 并选择源数据库 
-- 在"选择源表和源视图"中, 选择所有的表 
-- 最后完成 

#7


引用楼主 tajear 的回复:
今天附加数据库时,出现异常代码:1813
在解决过程中遇到修改系统表
update sysdatabases set status = 32768 --该参数为置为紧急状态
where name = '待附加的数据库'
出现:不允许对系统目录进行即席更新。
参考:http://lcj240856742.blog.163.com/blog/static/656753420109529398……

系統表,只有在SQL2000或之前版本可以改,sql2005之后是不可以改的

#8


USE [master]
GO
ALTER DATABASE Test SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE Test SET  SINGLE_USER 
GO


直接用語句把DB改為單用戶模式,可執行dbcc修復命令

#9


引用 6 楼 fredrickhu 的回复:
SQL code
2008转到2000的步骤 
1. 生成for 2000版本的数据库脚本 
2008 的manger studio 
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例 
-- 右键要转到2000的库 
-- 任务 
-- 生成脚本 
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库 
-- 勾选"为所选数据库中的所有对象编……


TO 6楼 楼主:
如果是SQL2008转SQL2005会不会有问题,如果有问题,用这种方法可不可以解决呢?

#10


引用 9 楼 liw125008 的回复:
引用 6 楼 fredrickhu 的回复:
SQL code
2008转到2000的步骤
1. 生成for 2000版本的数据库脚本
2008 的manger studio
-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例
-- 右键要转到2000的库
-- 任务
-- 生成脚本
-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库
-- ……


2008-2005也是导脚本。