ScriptDom に Azure SQL DB / (DW?) 用に使えそうなオプションが増えてました
久々に ScriptDom のバージョンを上げてみたら、SqlEngineType が追加されてました。
NuGet Gallery | Microsoft.SqlServer.TransactSql.ScriptDom 14.0.3660.1
TSql130Parser, TSql140Parser に SqlEnginType が渡せるようです。
namespace Microsoft.SqlServer.TransactSql.ScriptDom { public enum SqlEngineType { All = 0, Standalone = 1, SqlAzure = 2 } }
未だちゃんと動かなそうでしたが。
var azure = new TSql140Parser(false, SqlEngineType.SqlAzure); IList<ParseError> azureErrors; using (var sr = new StringReader(@"CREATE DATABASE hito COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS ( MAXSIZE = 500 MB, EDITION = 'standard', SERVICE_OBJECTIVE = 'S1' );")) { azure.Parse(sr, out azureErrors); } Console.WriteLine(azureErrors.Count); // 1 Console.WriteLine(azureErrors[0].Message); // Incorrect syntax near MAXSIZE.
SQL DB では使える CREATE DATABASE のオプションがエラーになってしまいました。。