最新の投稿

HKU\.Defaultはデフォルトユーザのものではない。

HKU\.DEFAULT(HKEY_USERS\.DEFAULT)は、あちこちで間違った認識をされている。HKU\.DEFAULT(HKEY_USERS\.DEFAULT)は、デフォルトユーザとかテンプレートユーザと呼ばれるアカウント(=今後作成されるユーザアカウントの初期設定)...

2008/04/04

WSUS 3.0SP1用SQL

さてさて, 先日WSUS3.0をSP1にアップグレードしようとしたら,
最後でこけてしまって, 再インストールになってしまったWSUSサーバちゃん.
今まではDBにWMSDEを使用していたと思っていたのだけれど,
再インストール後に確認すると, DBはWindows Internal Databaseに
なっているようでした.
ということは, 管理コンソールから接続できるんじゃん?

Microsoft SQL Server Management Studio Express
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796

WSUS 3.0SP1用 (Windows Internal Database)
Server name: \\.\pipe\mssql$microsoft##ssee\sql\query
Authentication: Windows Authentication

ほい.

で, 使えそうなSQL文たち.

まずは, 適用が必要なパッチの一覧
SELECT B.FullDomainName, B.IPAddress, 
H.Title AS category, C.Title, A.SummarizationState, 
B.LastReportedStatusTime, F.SecurityBulletinID, I.KBArticleID, D.updateID
FROM 
SUSDB.dbo.tbUpdateStatusPerComputer A
INNER JOIN
SUSDB.dbo.tbComputerTarget B ON A.targetID = B.targetID
INNER JOIN
SUSDB.dbo.tbUpdate D ON A.LocalUpdateID = D.LocalUpdateID
INNER JOIN
SUSDB.dbo.tbPreComputedLocalizedProperty C ON C.updateID = D.updateID
INNER JOIN
SUSDB.dbo.tbRevision E ON D.localUpdateID = E.localUpdateID
LEFT OUTER JOIN
SUSDB.dbo.tbSecurityBulletinForRevision F ON E.RevisionID = F.RevisionID
INNER JOIN
SUSDB.dbo.tbRevisionInCategory G ON E.RevisionID = G.RevisionID
INNER JOIN
SUSDB.dbo.tbPrecomputedCategoryLocalizedProperty H ON G.CategoryID = H.CategoryID
LEFT OUTER JOIN
SUSDB.dbo.tbKBArticleForRevision I ON E.RevisionID = I.RevisionID
WHERE (H.ShortLanguage = 'en') AND (C.ShortLanguage = 'en') AND 
(H.CategoryType = 'UpdateClassification') AND (NOT (A.SummarizationState IN (1, 4)))

SummarizationStateの意味は2.0と同じ
1 = Not Applicable
2 = Needed
3 = Downloaded
4 = Installed
5 = Failed
6 = Reboot Required

なので, (NOT (A.SummarizationState IN (1, 4)))の部分を
(A.SummarizationState IN (1, 4))にしたら, 適用済み・適用不要の一覧が出ます.


続いて, ホストの一覧
SELECT C.*, A.Name, D.*
FROM
SUSDB.dbo.tbTargetGroup A
LEFT OUTER JOIN
SUSDB.dbo.tbTargetInTargetGroup B ON B.TargetGroupID = A.TargetGroupID
RIGHT OUTER JOIN
SUSDB.dbo.tbComputerTarget C ON B.TargetID = C.TargetID
INNER JOIN
SUSDB.dbo.tbComputerTargetDetail D ON C.TargetID = D.TargetID


それから, パッチの一覧
SELECT
  B.updateID,
  B.LegacyName, 
  A.Title, 
  A.Description,
  D.Title AS Category,
  F.KBArticleID, 
  G.SecurityBulletinID, 
  H.MoreInfoURL
FROM
  SUSDB.dbo.tbPreComputedLocalizedProperty A
INNER JOIN
  SUSDB.dbo.tbUpdate B ON A.UpdateID = B.UpdateID 
INNER JOIN
  SUSDB.dbo.tbRevisionInCategory C ON A.RevisionID = C.RevisionID 
INNER JOIN
  SUSDB.dbo.tbPrecomputedCategoryLocalizedProperty D ON C.CategoryID = D.CategoryID
INNER JOIN
  SUSDB.dbo.tbRevision E on E.localUpdateID = B.localUpdateID
LEFT JOIN
  SUSDB.dbo.tbKBArticleForRevision F ON F.RevisionID = E.RevisionID
LEFT JOIN 
  SUSDB.dbo.tbSecurityBulletinForRevision G ON G.RevisionID = E.RevisionID
INNER JOIN
  SUSDB.dbo.tbMoreInfoURLForRevision H ON H.RevisionID = E.RevisionID 

WHERE
  A.ShortLanguage = 'en' AND
  D.CategoryType = 'UpdateClassification' AND
  D.ShortLanguage = 'en' AND
  E.islatestRevision = 'True' AND
  H.ShortLanguage = 'en'

0 件のコメント: