欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

改变WID的位置

程序员文章站 2022-06-08 15:12:20
改变wid的位置   一、把 \windows\wid 目录移动到 e:\wid。 要在安全模式下进行。 以后的所有工作都可以在正常模式下进行。  ...

改变wid的位置

 

一、把 \windows\wid 目录移动到 e:\wid。

要在安全模式下进行。

以后的所有工作都可以在正常模式下进行。

 

二、修改注册表中的有关内容,共有 7 个地方,分成 4 个方面。

 1、关于类注册,有两个。这两个的修改需要先取得对键值的控制权。

[hklm\software\classes\clsid\{a6f16b19-0040-4947-8d3f-52de129bb615}]

@="microsoft wid server virtual device interface for server"

 

[hklm\software\classes\clsid\{a9a3fe12-61c7-496e-aabf-b83e3287ab82}]

@="microsoft wid server virtual device interface for client"

 

2、关于服务,有两个。

[hklm\system\currentcontrolset\services\mssql$microsoft##wid]

[hklm\system\currentcontrolset\services\widwriter]

 

displayname 和 description,要注意前面的 @ 不能省略。

 

3、关于 sql server 的有一个。

[hklm\software\microsoft\microsoft sql server]

 

4、关于事件日志的有两个。

[hklm\system\currentcontrolset\services\eventlog\application\mssql$microsoft##wid]

[hklm\system\currentcontrolset\services\eventlog\application\widvdi]

 

经过这两步,widwriter 服务已经可以启动了,但是,sql server 服务还是不能启动。后来,发现,是由于权限的问题。

这个权限的设置就有点难度了。是要求 mssql$microsoft##wid 用户必须对 data 和 log 目录有写入的权限。而这个用户是无法添加的。因此,只能从正常的服务器上把权限复制过来。

 

三、设置 wid 目录的权限。

 

1、复制原来的权限:

cacls c:\windows\wid\log /s

下面的是输出:

c:\windows\wid\log "d:pai(a;oici;fa;;;ba)(a;oici;fa;;;sy)(a;;0x13019f;;;s-1-5-80-1184457765-4068085190-3456807688-2200952327-3769537534)(a;oiciio;sdgwgr;;;s-1-5-80-1184457765-4068085190-3456807688-2200952327-3769537534)"

 

2、设置新目录的权限:

cacls e:\wid\log /s:"d:pai(a;oici;fa;;;ba)(a;oici;fa;;;sy)(a;;0x13019f;;;s-1-5-80-1184457765-4068085190-3456807688-2200952327-3769537534)(a;oiciio;sdgwgr;;;s-1-5-80-1184457765-4068085190-3456807688-2200952327-3769537534)"

 

用同样的方法设置 data 的权限。binn 的权限可能不设置也行。

 

四、改变数据文件的位置。

实际上,文件才只有 100 多兆,不一定真有移动的必要。

因此,前面的操作意义并不好,仅在于学习而已。

 

真正需要移动的是数据文件,因为数据文件可能会很大,并且在系统盘上进行频繁访问也对性能有影响。

这就需要安装工具 sql management studio 了,有 600 多兆。

连接时,服务器名填写 \\.\pipe\microsoft##wid\tsql\query。余下的操作就没有什么难度了,分离、附加就好了。

 

五、出现的问题。

大概会有两个:

1、3417 错误

这是 sql 错误,是由于在 sql server 运行状态下复制的 master 等造成的。停止 sql server 服务后再复制数据库文件就可以了。

 

2、1067 错误

这是 windows 错误,说是进行意外终止。上,就是前面说的,mssql$microsoft##wid 用户对数据库目录没有读写权限造成的。

 

3、3605 错误

这是 sql 错误,说是验证数据库 susdb 架构失败。当把 wsus 3.0 的 susdb 附加到 windows 2012 中的 wid 时发生。

在 sql 日志中,具体表现为:

错误 50000, 严重性 16, 状态 1

detected an authorized object in schema

database verification script failed for database

 

%programfiles%\update services\tools\wsusutil postinstall [sql parameter] [content parameter]

两个参数分别指定 sql 服务器和升级补丁的位置,对于 wid, sql 就不必指定了。实际上,content 也不必指定,因为在安装时指定过了。如果不放心,就指定一焉,比如:f:\wsus

静静地等上 5、6 分钟,就好了。

 

六、说明。

微软是说通过备份与恢复的办法,实现数据库的迁移。

备份就不用多说了。

恢复的过程是这样的:

use master

go

 

alter database susdb set single_user with rollback immediate

go

 

drop database susdb

go

 

restore database [susdb] from disk = n'c:\susdb.bak' with file = 1, move n'susdb' to n'c:\windows\wid\data\susdb.mdf', move n'susdb_log' to n'c:\windows\wid\data\susdb_log.ldf', nounload, stats = 10

 

不过,即使这样,也一样出现 3605 的错误。