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 にアップグレードアドバイザは含まれていないのだろうか・・・?