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