のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.

SQL Server 2008 R2 のアップグレードアドバイザでメソッドが見つからないエラー

SQL Server 2008 R2 のアップグレードアドバイザを実行してみたらエラーが大量に出てきた。
が、明らかにアップグレードそのものに対するエラー内容ではない。。
とりあえず解決方法を調べてみた。

■エラー内容
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	ORDERBYORDINALS
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	DROPSYSOBJ
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	OLDSYSTEMTABLES
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	DUMPLOAD
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	HOSTIDRETURN
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	SYSPERFINFO
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	FTPROPS
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	FTCATALOGNAMERESTRICTION
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	INVALIDCHAR
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	MERGE
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	FTCATPROPITEMCOUNT
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	SPCONFIGURE
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	SPHELPTRIGGERNEWCOL
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	NONANSIOUTER
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	XPAGENTPROXY
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	DEPRECATEDSP
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	DBCCCONCURRENCYVIOLATION
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	ORDERBYALIAS
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	OLDDBCC
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	INFOSCHEMATA
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	VIEWFORBROWSE
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	BACKUPRESTORETRANSACTION
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	TRACEFLAGS
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	SYSLOCKINFO
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	LARGECONSTTYPE
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	DBCOMPTLEVEL
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	BACKUPLOG
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	VIEWCHECKOPT
Database Server	"PreUpgrade
(アップグレード前)"	メソッドが見つかりません: 'System.Collections.Generic.IEnumerable`1<Microsoft.SqlServer.Management.SqlParser.Parser.Error> Microsoft.SqlServer.Management.SqlParser.SqlCodeDom.SqlCodeObject.get_Errors()'	FORXMLAUTO

英語版だと「"Database Server","PreUpgrade","Method not found: 'System......」となっている。

■環境

SQL Server 2008 R2 Standard SP3 64bit のアップグレードアドバイザーを実行。
対象は SQL Server 2000 32bit で、対象コンポーネントは「SQL Server」のみ。
認証には sa ユーザを使用。

サイド バイ サイドで移行するにあたって、バージョンに問題ないことは確認済み。
https://msdn.microsoft.com/en-IN/library/ms143694(v=sql.105).aspx

■調べてみた

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/aacfd6d3-2503-4b4e-83c7-acb6be6513d3/error-running-ugrade-advisor-2008r2-on-sql2005-method-not-found?forum=sqlsetupandupgrade
どうやら SQL Server 2008 R2 SP1 の Feature Pack をあてると解決するらしい。

ダウンロードはここから
http://www.microsoft.com/ja-JP/download/details.aspx?id=26728
SqlUA.msi をダウンロードしてサーバで実行する。
SP3 あたってるし、ないだろー、と思いつつ再度アップグレードアドバイザを実行してみたら、上記のエラーが消えた。。マジか。

SP3 にアップグレードアドバイザは含まれていないのだろうか・・・?