Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
山田 浩史
SQL Engine Support Engineer
みなさん、こんにちは。今回は、Windows Azure SQL Database を使用していると直面しうるエラーについて紹介します。
現象:
SQL Server Management Studio(SSMS) を使用して SQL Database 上のデータベースに対してスクリプト生成を行うとエラーで失敗する。
エラーレポートを確認すると以下のエラーが出力されている。
------
名前:
'test_database' からオブジェクトの一覧を取得しています。
結果:
失敗
メッセージ:
Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: この要求のデータを取得できませんでした。
---> Microsoft.SqlServer.Management.Sdk.Sfc.InvalidVersionEnumeratorException: バージョン 11.0 ではサポートされていない操作。
場所 Microsoft.SqlServer.Management.Smo.XmlReadDoc.LoadFile(Assembly a, String strFile)
場所 Microsoft.SqlServer.Management.Smo.SqlObject.LoadInitDataFromAssemblyInternal(Assembly assemblyObject, String file, ServerVersion ver, String alias, StringCollection requestedFields, Boolean store, StringCollection roAfterCreation, DatabaseEngineType databaseEngineType)
場所 Microsoft.SqlServer.Management.Smo.SqlObject.LoadInitData(String file, ServerVersion ver, DatabaseEngineType databaseEngineType)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.ObjectCache.LoadElement(ObjectLoadInfo oli, ServerVersion ver, DatabaseEngineType databaseEngineType)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.ObjectCache.GetElement(ObjectLoadInfo oli, ServerVersion ver, DatabaseEngineType databaseEngineType)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.ObjectCache.GetAllElements(Urn urn, ServerVersion ver, DatabaseEngineType databaseEngineType)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetObjectsFromCache(Urn urn, Object ci)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
場所 Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
--- 内部例外スタック トレースの終わり ---
場所 Microsoft.SqlServer.Management.SqlScriptPublish.GeneratePublishPage.worker_DoWork(Object sender, DoWorkEventArgs e)
場所 System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
場所 System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
------
原因:
製品の不具合です。
本現象は以下の 2 つの条件を満たす場合に発生します。
・SSMS のバージョンが 11.00.3000 未満の場合(※1)
・SQL Database のデータベースの照合順序がデフォルトの "SQL_Latin1_General_CP1_CI_AS" 以外に設定されている場合(※ 2)
※1 SSMS のバージョンは、[ヘルプ] - [バージョン情報] から確認出来ます。
※2 データベースの照合順序は以下のクエリにて確認出来ます。
SELECT name, collation_name FROM sys.databases
対処方法:
本現象は下記サイトで提供している、SSMS 2012 SP1 (11.00.3000) にて修正されています。
そのため、こちらのバージョンより新しい SSMS を使用することで本現象は回避出来ます。
例:
Microsoft SQL Server 2012 Service Pack 1 (SP1) Express
https://www.microsoft.com/ja-jp/download/details.aspx?id=35579
補足:
今回のエラーは、SSMS より "データ層アプリケーションの抽出" や "データ層アプリケーションのエクスポート" を実施した際にも発生する可能性のあるエラーです。
対処策は同様ですので、最新のサービスパックを適用した SSMS を使用してください。
なお、2013年7月31日時点での SQL Server 2012 の最新のサービスパックは、Service Pack 1 です。
