改变 WID 的位置

来源:互联网 发布:微耕门禁数据库表结构 编辑:程序博客网 时间:2024/04/28 10:20

改变 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 的错误。

原创粉丝点击