diff --git a/SqlScriptDom/Parser/TSql/AlterAvailabilityGroupStatementType.cs b/SqlScriptDom/Parser/TSql/AlterAvailabilityGroupStatementType.cs
index 6787ba02..aa77ba99 100644
--- a/SqlScriptDom/Parser/TSql/AlterAvailabilityGroupStatementType.cs
+++ b/SqlScriptDom/Parser/TSql/AlterAvailabilityGroupStatementType.cs
@@ -41,5 +41,13 @@ public enum AlterAvailabilityGroupStatementType
/// Take an action
///
Action = 6,
+ ///
+ /// Grant CREATE ANY DATABASE
+ ///
+ GrantCreateAnyDatabase = 7,
+ ///
+ /// Deny CREATE ANY DATABASE
+ ///
+ DenyCreateAnyDatabase = 8,
}
}
diff --git a/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionKind.cs b/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionKind.cs
index 3e181b44..7f88774c 100644
--- a/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionKind.cs
+++ b/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionKind.cs
@@ -41,6 +41,10 @@ public enum AvailabilityReplicaOptionKind
/// Primary role
///
PrimaryRole = 6,
+ ///
+ /// Backup priority
+ ///
+ BackupPriority = 7,
}
}
diff --git a/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionsHelper.cs b/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionsHelper.cs
index 9bfff922..bd9174b2 100644
--- a/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionsHelper.cs
+++ b/SqlScriptDom/Parser/TSql/AvailabilityReplicaOptionsHelper.cs
@@ -14,6 +14,7 @@ internal class AvailabilityReplicaOptionsHelper : OptionsHelper
+ /// Negative test for GitHub issue #222: ALTER AVAILABILITY GROUP ... GRANT/DENY only
+ /// accepts CREATE ANY DATABASE; any other permission phrase must be rejected.
+ ///
+ [TestMethod]
+ [Priority(0)]
+ [SqlStudioTestCategory(Category.UnitTest)]
+ public void AlterAvailabilityGroupCreateAnyDatabaseNegativeTest()
+ {
+ ParserTestUtils.ErrorTest130("ALTER AVAILABILITY GROUP [ag] GRANT CREATE ANY TABLE",
+ new ParserErrorInfo(47, "SQL46010", "TABLE"));
+ }
+
///
/// Negative tests for create table with generated always
/// as user id/name start/end columns
diff --git a/Test/SqlDom/TestScripts/AlterAvailabilityGroupBackupPriorityTests.sql b/Test/SqlDom/TestScripts/AlterAvailabilityGroupBackupPriorityTests.sql
new file mode 100644
index 00000000..7a8a0cee
--- /dev/null
+++ b/Test/SqlDom/TestScripts/AlterAvailabilityGroupBackupPriorityTests.sql
@@ -0,0 +1,8 @@
+-- Regression tests for GitHub issue #222: BACKUP_PRIORITY must be accepted as an integer-valued
+-- replica option in ADD REPLICA ON / MODIFY REPLICA ON.
+ALTER AVAILABILITY GROUP [SalesAG] ADD REPLICA ON 'node1' WITH (BACKUP_PRIORITY = 50)
+GO
+ALTER AVAILABILITY GROUP [SalesAG] ADD REPLICA ON 'node2' WITH (ENDPOINT_URL = 'TCP://node2:5022', FAILOVER_MODE = MANUAL, AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, BACKUP_PRIORITY = 50)
+GO
+ALTER AVAILABILITY GROUP [SalesAG] MODIFY REPLICA ON 'node1' WITH (BACKUP_PRIORITY = 100)
+GO
diff --git a/Test/SqlDom/TestScripts/AlterAvailabilityGroupCreateAnyDatabaseTests130.sql b/Test/SqlDom/TestScripts/AlterAvailabilityGroupCreateAnyDatabaseTests130.sql
new file mode 100644
index 00000000..276afd20
--- /dev/null
+++ b/Test/SqlDom/TestScripts/AlterAvailabilityGroupCreateAnyDatabaseTests130.sql
@@ -0,0 +1,5 @@
+-- Regression tests for GitHub issue #222: ALTER AVAILABILITY GROUP ... { GRANT | DENY } CREATE ANY DATABASE.
+ALTER AVAILABILITY GROUP [SalesAG] GRANT CREATE ANY DATABASE
+GO
+ALTER AVAILABILITY GROUP [SalesAG] DENY CREATE ANY DATABASE
+GO