Skip to content

Latest commit

 

History

History
3866 lines (3610 loc) · 204 KB

CHANGELOG.md

File metadata and controls

3866 lines (3610 loc) · 204 KB

Change log for SqlServerDsc

The format is based on and uses the types of changes according to Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Changed

  • SqlServerDsc
    • The examples that was located in the README in the examples folder has now been moved to the WikiSource folder. The examples are published to the repository Wiki. The README has been updated to link to the new location (issue #2051).
  • SqlSetup
    • Fixed issue with AddNode where cluster IP information was not being passed to setup.exe (issue #1171).

Fixed

  • SqlServerDsc
    • Fix localization tests.

[17.0.0] - 2024-09-30

Added

  • SqlSetup
    • Added new parameter ProductCoveredbySA which is introduced in SQL 2022.

Added

  • Connect-SqlDscDatabaseEngine
    • Added integration test for the command.
  • Uninstall-SqlDscServer
    • Added integration test for the command.

Changed

  • SqlScript
    • BREAKING CHANGE: The parameter Id is now required to allow reuse of a script with different variables. Set this to a unique value. The information entered is never used to actually run the script (issue #596).
    • Fix unit test to fully check Set-TargetResource using timeout.
  • SqlScriptQuery
    • BREAKING CHANGE: The parameter Id is now required to allow reuse of a script with different variables. Set this to a unique value. The information entered is never used to actually run the script (issue #596).
    • Fix unit test to fully check Set-TargetResource using timeout.
  • SqlServerDsc
    • Replaced inline task Package_Wiki_Content with the one now available in the module DscResource.DocGenerator.
  • Connect-SqlDscDatabaseEngine
    • Update comment-based help with more examples.
  • SqlSetup
    • The parameter SecurityMode now only (correctly) allows the value SQL (issue #1185).

Fixed

  • SqlServerDsc
    • Fix issue template.
  • Connect-SqlDscDatabaseEngine
    • Comment-based help for parameter LoginType was corrected.
    • An integration test now runs to test the command.
  • SqlAudit
    • Fixed unit tests.
  • SqlDatabaseMail
    • Fix unit test, removing Assert-VerifiableMock that was left over from Pester 5 conversion.

[16.6.0] - 2024-05-17

Added

  • SqlServerDsc
    • Added build tasks to generate Wiki documentation for public commands.
    • Initial integration tests for commands.
  • SqlDatabaseMail
    • Added the parameter UseDefaultCredentials to control use of the DatabaseEngine service account for SMTP server authentication.
  • New public commands
    • Save-SqlDscSqlServerMediaFile - Downloads the content on the provided URL and if it is an executable it will use the executable to download the ISO image media.

Fixed

  • SqlServerDsc
    • Get-SMOModuleCalculatedVersion
      • Return SQLPS version as 12.0 instead of 120
    • Get-SqlDscPreferredModule
      • Fix sort to get the latest version
    • Public commands no handles when both -Force and -Confirm $true would be passed to command.
    • Enabled NUnit results for HQRM tests.
  • Assert-Feature
    • Fixed unit tests.
  • SqlAGReplica
    • Fix unit test FailedRemoveAvailabilityGroupReplica
  • SqlAgentOperator
    • Integration test for changing e-mail address on an existing operator.
  • DatabasePermission
    • New method ToString() for making verbose output better.
  • ServerPermission
    • New method ToString() for making verbose output better.
  • SqlAgDatabase
  • SqlDatabaseObjectPermission
    • Added foreach loop in Get-TargetResource to fix issues with INSERT permissions when it's not the only permission on the table ([issue #2006]).
  • Install-SqlDscServer
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Add-SqlDscNode
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Complete-SqlDscFailoverCluster
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Complete-SqlDscImage
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Initialize-SqlDscRebuildDatabase
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Remove-SqlDscNode
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Repair-SqlDscServer
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Uninstall-SqlDscServer
    • No longer throws with duplicate parameter error if the parameter ErrorAction is passed to the command.
  • Private functions
    • Invoke-SetupAction no longer throws when secure strings is passed on Windows PowerShell.

Changed

  • SqlServerDsc
    • Updated pipeline files to support pre-releases with ModuleFast (when resolving dependencies).
    • Bump PSResourceGet to v1.0.0 (used when resolving dependencies).
    • Update markdown highlights with newly supported keywords.
    • Bump GitHub Action Stale to v9.
    • Bump GitHub Action CodeQL-Action to v3.
    • Documentation is now built using a separate meta task docs. It is run with the meta task pack which is run by the pipeline. To run the meta task docs the SMO assemblies must be loaded into the session, either by importing SqlServer module or loading SMO stubs.
    • QA test improved to speed up quality testing.
    • The pipeline test stages has been split into different stages.
  • SqlAG
    • Converted unit test to Pester 5
    • DtcSupportEnabled option in Set-TargetResource and TestTargetResource
  • SqlSetup
    • Updated integration tests to use PSResourceGet to download required modules.
  • SqlRS
    • Integration tests for SQL Server 2022 has been temporarily disabled due to a unknown problem. More information in issue #2009.

[16.5.0] - 2023-10-05

Fixed

  • SqlDatabase
    • Add Version160 to CompatibilityLevel ValidateSet

Added

  • SqlServerDsc
    • Updated pipeline files to support ModuleFast and PSResourceGet.
    • Get-SqlDscPreferredModule
      • Optionally specify what version of the the SQL preferred module to be imported using the SMODefaultModuleVersion environment variable (issue #1965).
    • Now package the Wiki content and adds it as a GitHub Release asset so it is simpler to get the documentation for a specific version.
    • CODEOWNERS file was added to support automatically set reviewer.
  • New private command:
    • Get-SMOModuleCalculatedVersion - Returns the version of the SMO module as a string. SQLPS version 120 and 130 do not have the correct version set, so the file path is used to calculate the version.
  • SqlSetup
    • Added the parameter SqlVersion that can be used to set the SQL Server version to be installed instead of it looking for version in the setup executable of the SQL Server media. This parameter is not allowed for the setup action Upgrade, if specified it will throw an exception (issue #1946).

Changed

  • SqlRs
    • Updated examples to use xPSDesiredStateConfiguration instead of PSDScResources.
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlScript
    • Updated examples to use xPSDesiredStateConfiguration instead of PSDScResources.
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlScriptQuery
    • Updated examples to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlSetup
    • Updated examples to use xPSDesiredStateConfiguration instead of PSDScResources.
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlAlwaysOnService
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlLogin
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlReplication
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlRSSetup
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlServiceAccount
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlWindowsFirewall
    • Updated integration tests to use xPSDesiredStateConfiguration instead of PSDScResources.
  • SqlServerDsc
    • Get-SqlDscPreferredModule
      • Now returns a PSModuleInfo object instead of just the module name.
    • Import-SqlDscPreferredModule
      • Handles PSModuleInfo objects from Get-SqlDscPreferredModule instead of strings.
      • Sets -ErrorAction 'Stop' on Get-SqlDscPreferredModule to throw an error if no SQL module is found. The script-terminating error is caught and made into a statement-terminating error.
    • Bump GitHub Action Checkout to v4.
  • SqlAGListener
    • Made the resource cluster aware. When ProcessOnlyOnActiveNode is specified, the resource will only determine if a change is needed if the target node is the active host of the SQL Server instance (issue #871).

Remove

  • SqlServerDsc
    • Removed PreferredModule_ModuleFound string in favor for more verbose PreferredModule_ModuleVersionFound.

[16.4.0] - 2023-08-22

Added

  • SqlServerDsc
    • Added a new build task fastbuild that can be used during development process when there are no need to generate documentation.
    • Added new public command:
      • Get-SqlDscConfigurationOption - Returns the available configuration options that can be used with the DSC resource SqlConfiguration.

Changed

  • SqlServerDsc
    • Re-enable integration tests for dbatools.
    • Bumped dbatools to v2.0.1 for the integration tests.
    • Running PSScriptAnalyzer on the built module (issue #1945).
    • Fix header in unit tests that referenced the wrong path.
    • Fix a path in VS Code workspace settings to correctly use Script Analyzer on Linux and macOS.
    • Highlighted note comments throughout markdown and generated markdown.
  • SqlServerDsc.Common
    • Fix unit tests so they work cross-platform.
  • ScriptAnalyzer.Tests was fixed so they work cross-platform.
  • SqlSetup
    • Highlighted a note in the README.md.
  • SqlMemory
    • Highlighted an important note in the README.md.
  • SqlMaxDop
    • Highlighted an important note in the README.md.
  • Get-SqlDscPreferredModule
    • Fix unit tests so they work cross-platform.

Fixed

  • SqlServerDsc
    • Fix style changes in all private and public commands.
  • Import-SqlDscPreferredModule
    • Now when parameter Force is passed the command correctly invoke Get-SqlDscPreferredModule using the parameter Refresh.
  • SqlWindowsFirewall
    • Fix duplication of SQL Server Browser Firewall Rule when deploying Analysis Services feature (issue #1942).
  • SqlLogin
    • Attempting to disable and already disabled login throws an error (issue #1952).
  • Install-SqlDscServer
    • Now the parameter InstanceName can no longer be specified (as per the SQL Server documentation) for the setup action PrepareImage (issue #1960).

[16.3.1] - 2023-05-06

Changed

  • SqlServerDsc
    • Temporary disable integration tests for dbatools.
  • SqlAg
    • Added optional parameter SeedingMode that will set the SeedingMode for the SQL Server 2016 and higher. This parameter can only be used together with the module SqlServer installed (tested v21.0.17099). The parameter will be ignored if SQLPS module will be used.
  • SqlAgReplica
    • Added optional parameter SeedingMode that will set the SeedingMode for the SQL Server 2016 and higher (issue #487). This parameter can only be used together with the module SqlServer installed (tested v21.0.17099). The parameter will be ignored if SQLPS module will be used.

Fixed

  • Import-SqlDscPreferredModule
    • Now the command does not fail when checking if SQLPS is loaded into the session (issue #1928).

[16.3.0] - 2023-04-26

Remove

  • SqlServerDsc.Common
    • Removed the function Invoke-Query. It is replaced by the command Invoke-SqlDscQuery (issue #1902).

Added

  • New public commands:
    • Disconnect-SqlDscDatabaseEngine - Disconnects from a SQL Server instance that was previously connected to using Connect-SqlDscDatabaseEngine.
    • Test-SqlDscIsSupportedFeature - Evaluates if a feature is supported by a specific Microsoft SQL Server major version. This command must be extended with a full list of when features were added and removed in each major version to fully work.
  • New private commands:
    • ConvertTo-RedactedText - Used to redact sensitive information from text that then can be used in console output like verbose messages.
    • Get-FileVersionInformation - Returns the version information for a file.
    • Assert-Feature - Throws an exception if a feature is not supported for a specific Microsoft SQL Server major version.
  • SqlServerDsc.Common
    • Connect-SQL.
      • Add new parameter Encrypt.
  • Connect-SqlDscDatabaseEngine
    • Add new parameter Encrypt.
  • Invoke-SqlDscQuery
    • Add new parameter Encrypt.

Changed

  • Now able to use DbaTools as a preferred module (with some restrictions).
  • Gitversion no longer evaluates bumping major version using the word "major".
  • Update private commands:
    • Assert-SetupActionProperties was changed to throw an exception when a feature is not supported (calls Assert-Feature). The private command is indirectly used by the setup action commands.
    • Invoke-SetupAction was changed to expand environment variables that is passed as the media path.
  • SqlSetup
    • Update to support checking non-supported features using the command SqlDscIsSupportedFeature (issue #1872).
  • Update SqlServerDsc.Common Module:
    • Connect-SQL - Function will now wait for the SMO Status property to be 'Online' or throw an exception if time exceeds the statement timeout.
  • SqlRS
    • Now uses the command Invoke-SqlDscQuery instead of Invoke-SqlCmd (issue #1917).
    • The parameter Encrypt has changed so that Mandatory or Strict will turn on encryption when connecting to the database instance.
  • SqlDatabaseMail
    • Update integration tests to verify multiple instances of SqlDatabaseMail in the same configuration (issue #1871).
    • Changed comparison logic to use Compare-DscParameterState (issue #1871).
    • Return the correct profile name and mail server name from the current state (issue #1871).
  • Invoke-SqlDscQuery
    • Now shows the correct instance name when called using a server object (issue #1918).
    • Correctly outputs query in verbose message when parameter RedactText is not passed.
  • Import-SqlDscPreferredModule
    • Better handle preferred module and re-uses logic in Get-SqlDscPreferredModule.

[16.2.0] - 2023-04-10

Added

  • SqlServerDsc
    • New GitHub Actions workflow that run PSScriptAnalyzer for PRs so any issues are shown directly in the PR's changed files (issue #1860).
    • Added a separate integration test jobs for SQL Server Reporting Services to be able to test configuring SQL Server Reportings Services using other values that the default values.
    • Now updates GitHub Actions automatically by allowing dependabot sending in pull requests.
    • New public command:
      • Get-SqlDscPreferredModule - Returns the name of the first available preferred module (issue #1879).
        • Re-using the command Get-PSModulePath from the module DscResource.Common.
  • SqlSecureConnection
    • Added new parameter ServerName that will be used as the host name when restarting the SQL Server instance. The specified value should be the same name that is used in the certificate (issue #1888).
  • SqlSetup
    • Added new parameter ServerName that will be used as the host name when evaluating the SQL Server instance. If using a secure connection the specified value should be the same name that is used in the certificate (issue #1893).

Changed

  • SqlServerDsc
    • Update appveyor.yml to use dotnet tool install to install GitVersion.
    • Re-enable integration tests for SqlRSSetup and SqlRS when running against SQL Server 2019 (issue #1847).
    • The private function Import-SQLPSModule was replaced throughout with the public command Import-SqlDscPreferredModule (issue #1848).
    • Removed the regular expression features? from the GitVersion configuration. Before, if a fix commit mentioned the word feature but means a SQL Server feature GitVersion would bump minor instead of patch number.
    • Update pipeline script that is used to resolve dependencies.
    • When running in Azure Pipelines any existing SqlServer module is removed before running integration tests, so the tests can update to latest version.
    • Now the new label 'command proposal' is an exempt for labeling issues stale.
    • Update the initializing header for all integration test to be equal to the unit tests.
    • Rename task jobs in Azure Pipelines (issue #1881).
    • Bump SqlServer version to 22.0.59 for integration tests for SQL Server 2022.
  • Get-SqlDscAudit
    • The parameter Name is no longer mandatory. When left out all the current audits are returned (issue #1812).
  • Import-SqlDscPreferredModule
    • Now correctly preserves paths that is set in the session for the environment variable $env:PSModulePath. If the module SqlServer or SQLPS are not found the command will populate the $env:PSModulePath with the unique paths from all targets; session, user, and machine. This is done so that any new path that was added to the machine or user target will also be set in the session.
    • Now imports the preferred module into the global scope so that MOF-based resources (that is in another module scope) can use the imported module.
    • Some code cleanup (issue #1881).
    • Refactor to re-use the command Get-SqlDscPreferredModule.
  • SqlServerDsc.Common
    • Restart-SqlService no longer silently ignores errors that prevents the instance to go online. If the instance has not gone online during the timeout period the error thrown will no contain the last error reported by Connect-SQL (issue #1891).
    • Invoke-SqlScript no longer passes the parameter Variable to Invoke-SqlCmd if it is not set (issue #1896).
  • DatabasePermission
    • Class was updated with the latest database permissions.

Fixed

  • Assert-SetupActionProperties
    • Now throws an exception if the setup action is Install and the feature analysis services is specified without the parameter ASSysAdminAccounts (issue #1845).
    • Now throws an exception if the setup action is Install and the feature database engine is specified without the parameter SqlSysAdminAccounts.
  • Invoke-SetupAction
    • The parameter SqlSysAdminAccounts is no longer mandatory to allow installation where the database engine is not installed.
  • Install-SqlDscServer
    • The parameter SqlSysAdminAccounts is no longer mandatory to allow installation where the database engine is not installed.
  • SqlRS
    • Fixed issue of configuring reporting services (issue #1868).
    • Test renamed to When Reports virtual directory is different so it is more correct and not a duplicate.
    • Integration tests configuration names was renamed to better tell what the configuration does (issue #1880).
  • SqlServerDsc.Common
    • The command Restart-SqlService was updated to correctly evaluate when the timeout value is reached (issue #1889).

[16.1.0] - 2023-02-28

Removed

  • SqlServerDsc
    • Removed Assert-ElevatedUser from private functions (issue #1797).
      • Assert-ElevatedUser added to DscResource.Common public functions (issue #82).
    • Removed Test-IsNumericType from private functions (issue #1795).
      • Test-IsNumericType added to DscResource.Common public functions (issue #87).
    • Removed Test-ServiceAccountRequirePassword from private functions (issue #1794
      • Replaced by Test-AccountRequirePassword that was added to DscResource.Common public functions (issue #93).
    • Removed Assert-RequiredCommandParameter from private functions (issue #1796).
      • Replaced by Assert-BoundParameter (part of DscResource.Common) that had a new parameter set added (issue #92).
    • Removed private function Test-ResourceDscPropertyIsAssigned and Test-ResourceHasDscProperty. Both are replaced by Test-DscProperty which is now part of the module DscResource.Common.
    • Removed private function Get-DscProperty. It is replaced by Get-DscProperty which is now part of the module DscResource.Common.
    • The class ResourceBase and Reason has been removed, they are now part of the module DscResource.Base.
    • The enum Ensure has been removed, is is now part of the module DscResource.Base.
    • The private functions that the class ResourceBase depended on has been moved to the module DscResource.Base.
      • ConvertFrom-CompareResult
      • ConvertTo-Reason
      • Get-ClassName
      • Get-LocalizedDataRecursive
    • Added documentation how to generate stub modules for the unit tests. The documentation can be found in 'tests/Unit/Stubs`.
    • SqlRSSetup and SqlRS
      • Removed the integration test when running against SQL Server 2019, due to the URL to download the Reporting Services 2019 executable no longer works.

Added

  • SqlServerDsc
    • The following private functions were added to the module (see comment-based help for more information):
      • Assert-SetupActionProperties
      • Invoke-SetupAction
      • ConvertTo-ManagedServiceType
      • ConvertFrom-ManagedServiceType
      • Assert-ManagedServiceType
    • The following public functions were added to the module (see comment-based help for more information):
      • Install-SqlDscServer
      • Uninstall-SqlDscServer
      • Add-SqlDscNode
      • Remove-SqlDscNode
      • Repair-SqlDscServer
      • Complete-SqlDscImage
      • Complete-SqlDscFailoverCluster
      • Initialize-SqlDscRebuildDatabase
      • Import-SqlDscPreferredModule
      • Get-SqlDscManagedComputer
      • Get-SqlDscManagedComputerService
      • Get-SqlDscTraceFlag
      • Add-SqlDscTraceFlag
      • Remove-SqlDscTraceFlag
      • Set-SqlDscTraceFlag
      • Get-SqlDscStartupParameter
      • Set-SqlDscStartupParameter
    • Added class StartupParameters which can parse the startup parameters of a manged computer service object.
    • Added class SqlReason to be used as the type of the DSC property Reasons for class-based resources.
    • New GitHub issue templates for proposing new public commands, proposing an enhancement to an existing command, or having a problem with an existing command.
    • Integration tests are now also run on SQL Server 2022 and SQL Server Reporting Services 2022.
    • Integration tests now wait for LCM after each It-block, not just at the end of a Context-block. Hopefully this will mitigate some of the intermittent errors we have seen when running the integration tests in the pipeline.
    • Use preview version of Pester to support the development of Pester as this is a code base with a diverse set of tests thar can help catch issues in Pester. If preview release of Pester prevents release we should temporary shift back to stable.
    • New QA tests for public commands and private functions.
  • SqlDatabase
    • Added compatibility levels for SQL Server 2022 (major version 16).
  • SqlSetup
    • Paths for SQL Server 2022 are correctly returned by Get.
  • SqlRS
    • Added optional parameter Encrypt. Parameter Encrypt controls whether the connection used by `Invoke-SqlCmd should enforce encryption. This parameter can only be used together with the module SqlServer v22.x (minimum v22.0.49-preview). The parameter will be ignored if an older major versions of the module SqlServer is used.
  • SqlScript
    • Added optional parameter Encrypt. Parameter Encrypt controls whether the connection used by `Invoke-SqlCmd should enforce encryption. This parameter can only be used together with the module SqlServer v22.x (minimum v22.0.49-preview). The parameter will be ignored if an older major versions of the module SqlServer is used.
  • SqlScriptQuery
    • Added optional parameter Encrypt. Parameter Encrypt controls whether the connection used by `Invoke-SqlCmd should enforce encryption. This parameter can only be used together with the module SqlServer v22.x (minimum v22.0.49-preview). The parameter will be ignored if an older major versions of the module SqlServer is used.
  • SqlTraceFlag
    • The resource is now tested with an integration tests (issue #1835).
    • A new parameter ClearAllTraceFlags was added so a configuration can enforce that there should be no trace flags.
  • The public commands Add-SqlDscNode, Complete-SqlDscFailoverCluster, Complete-SqlDscImage, Install-SqlDscServer, and Repair-SqlDscServer now support the setup argument ProductCoveredBySA (issue #1798).

Changed

  • SqlServerDsc
    • Update Stale GitHub Action to v7.
    • Update to build module in separate folder under output.
    • Moved the build step of the pipeline to a Windows build worker when running in Azure DevOps.
    • Class-based resources now uses the parent class ResourceBase from the module DscResource.Base (issue #1790).
    • Settings for the Visual Studio Code extension Pester Tests was changed to be able to run all unit tests, and all tests run by the extension are now run in a separate process to be able to handle changes in class-based resources.
    • The AppVeyor configuration file was updated to include the possibility to run integration tests for SQL Server 2022.
    • The AppVeyor configuration file was updated to include the possibility to run skip installing one or more SQL Server instances when debugging in AppVeyor to help maximize the time alloted be run.
    • The stubs in SqlServerStub.psm1 are now based on the commands from the module SqlServer v22.0.49-preview.
    • The module will now call Import-SqlDscPreferredModule when the module is imported to make sure SqlServer (default preferred module) or SQLPS is loaded into the session. This will make it possible for classes and commands to use and return SQL types. If no module is found it will output a warning to install any of the dependent modules.
    • Add empty constructor to classes to be able to use Pester's new code coverage method. See more information can be found in pester/Pester#2306.
    • The type of the property Reasons was changed in the class-based resources. This resolves a problem when using two DSC resource modules that was using the same class-type for the property Reasons. Resolves the issues issue #1831, issue #1832, and issue #1833.
  • Install-SqlServerDsc
    • No longer throws an exception when parameter AgtSvcAccount is not specified.
  • SqlAgReplica
    • Converted unit test to Pester 5.
    • Update-AvailabilityGroupReplica to trigger once within Set-TargetResource for all AvailabilityReplica changes.
  • Private function Invoke-SetupAction (issue #1798).
    • Was changed to support the SQL Server 2022 GA feature AzureExtension (that replaced the feature name ARC).
    • Support the setup argument ProductCoveredBySA.
    • No longer supports the argument OnBoardSQLToARC as it was removed in SQL Server 2022 GA.
  • Install-SqlDscServer
    • Was changed to support the SQL Server 2022 GA feature AzureExtension (that replaced the feature name ARC) (issue #1798).
  • Uninstall-SqlDscServer
    • Was changed to support the SQL Server 2022 GA feature AzureExtension (that replaced the feature name ARC) (issue #1798).
    • Now support the argument SuppressPrivacyStatementNotice (issue #1809).
  • Import-SqlDscPreferredModule
    • No longer tries to get the environment variables from the machine state when run on Linux or macOS. This will allow the unit tests to run cross-plattform.
  • SqlReplication
    • The resource now supports SQL Server 2022. The resource will require the module SqlServer v22.0.49-preview or newer when used against an SQL Server 2022 instance (issue #1801).
  • SqlProtocol
    • The resource now supports SQL Server 2022. The resource will require the module SqlServer v22.0.49-preview or newer when used against an SQL Server 2022 instance (issue #1802).
  • SqlProtocolTcpIp
    • The resource now supports SQL Server 2022. The resource will require the module SqlServer v22.0.49-preview or newer when used against an SQL Server 2022 instance (issue #1805).
  • SqlServiceAccount
    • The resource now supports SQL Server 2022. The resource will require the module SqlServer v22.0.49-preview or newer when used against an SQL Server 2022 instance (issue #1800).
  • SqlSetup
    • Integration tests now used SqlServer module version 22.0.49-preview when running against SQL Server 2022, when testing SQL Server 2016, SQL Server 2017, and SQL Server 2019 the module version 21.1.18256 is used.
    • Integration tests now supports installing preview versions of the module SqlServer.
  • SqlServerDsc.Common
    • Import-SQLPSModule
      • Small changed to the localized string verbose message when the preferred module (SqlServer) is not found.
    • Invoke-SqlScript
      • Added the optional parameter Encrypt which controls whether the connection used by Invoke-SqlCmd should enforce encryption. This parameter can only be used together with the module SqlServer v22.x (minimum v22.0.49-preview). The parameter will be ignored if an older major versions of the module SqlServer is used.
    • Connect-SQL
      • Was updated to handle both -ErrorAction 'Stop' and -ErrorAction 'SilentlyContinue' when passed to the command (issue #1837).
      • Now returns a more clear error message when the status of a database instance is not Online.
    • Import-SQLPSModule
      • The function was changed to call public command Import-SqlDscPreferredModule.
  • SqlTraceFlag
    • The examples was updated to show that values should be passed as an array, even when there is only one value.
    • Get-TargetResource was updated to always return an array for parameter TraceFlags, TraceFlagsToInclude, and TraceFlagsToInclude. The last two properties will always return an empty array.

Fixed

  • SqlServerDsc
    • Localized strings file en-US/SqlServerDsc.strings.psd1 no longer referencing the wrong module in a comment.
  • SqlAGReplica
    • No longer tries to enforce EndpointHostName when it is not part of the configuration (issue #1821).
    • Now Get-TargetResource always returns values for the properties Name and AvailabilityGroupName (issue #1822).
    • Now Test-TargetResource no longer test properties that cannot be enforced (issue #1822).
  • SqlTraceFlag
    • Set-TargetResource was updated to handle a single trace flag in the current state (issue #1834).
    • Set-TargetResource was updated to correctly include or exclude a single flag (issue #1834).
  • SqlAudit
    • Return the correct type for parameter LogType when calling method Get().

[16.0.0] - 2022-09-09

Removed

  • The deprecated DSC resource SqlDatabaseOwner have been removed (and replaced by a property in SqlDatabase) (issue #1725).
  • The deprecated DSC resource SqlDatabaseRecoveryModel have been removed (and replaced by a property in SqlDatabase) (issue #1725).
  • The deprecated DSC resource SqlServerEndpointState have been removed (and replaced by a property in SqlEndpoint) (issue #1725).
  • The deprecated DSC resource SqlServerNetwork have been removed (and replaced by SqlProtocol and SqlProtocolTcpIp) (issue #1725).
  • CommonTestHelper
    • Remove the helper function Wait-ForIdleLcm since it has been moved to the module DscResource.Test.
    • Remove the helper function Get-InvalidOperationRecord since it has been moved to the module DscResource.Test.
    • Remove the helper function Get-InvalidResultRecord since it has been moved to the module DscResource.Test.

Added

  • SqlServerDsc
    • Added recommended VS Code extensions.
      • Added settings for VS Code extension Pester Test Adapter.
    • Added new Script Analyzer rules from the module Indented.ScriptAnalyzerRules to help development and review process. The rules that did not contradict the existing DSC Community rules and style guideline were added.
    • Added the Visual Studio Code extension Code Spell Checker to the list of recommended Visual Studio Code extensions.
    • Added a file prefix.ps1 which content is placed first in the built module (.psm1). This file imports dependent modules, and imports localized strings used by private and public commands.
    • The following classes were added to the module:
      • DatabasePermission - complex type for the DSC resource SqlDatabasePermission.
      • Ensure - Enum to be used for the property Ensure in class-based resources.
      • Reason - Used by method Get() to return the reason a property is not in desired state.
      • ResourceBase - class that can be inherited by class-based resource and provides functionality meant simplify the creating of class-based resource.
      • SqlResourceBase - class that can be inherited by class-based resource and provides default DSC properties and method for get a [Server]-object.
      • ServerPermission - complex type for the DSC resource SqlPermission.
    • The following private functions were added to the module (see comment-based help for more information):
      • ConvertFrom-CompareResult
      • ConvertTo-Reason
      • Get-ClassName
      • Get-DscProperty
      • Get-LocalizedDataRecursive
      • Test-ResourceHasDscProperty
      • Test-ResourceDscPropertyIsAssigned
    • The following public functions were added to the module (see comment-based help for more information):
      • Connect-SqlDscDatabaseEngine
      • ConvertFrom-SqlDscDatabasePermission
      • ConvertTo-SqlDscDatabasePermission
      • Get-SqlDscDatabasePermission
      • Set-SqlDscDatabasePermission
      • Test-SqlDscIsDatabasePrincipal
      • Test-SqlDscIsLogin
      • ConvertFrom-SqlDscServerPermission
      • ConvertTo-SqlDscServerPermission
      • Get-SqlDscServerPermission
      • Set-SqlDscServerPermission
      • Invoke-SqlDscQuery
      • Get-SqlDscAudit
      • New-SqlDscAudit
      • Set-SqlDscAudit
      • Remove-SqlDscAudit
      • Enable-SqlDscAudit
      • Disable-SqlDscAudit
    • Support for debugging of integration tests in AppVeyor.
      • Only run for pull requests
    • Add new resource SqlAudit.
  • CommonTestHelper
    • Import-SqlModuleStub
      • Added the optional parameter PasThru that, if used, will return the name of the stub module.
      • When removing stub modules from the session that is not supposed to be loaded, it uses Get-Module -All to look for previously loaded stub modules.
    • Remove-SqlModuleStub
      • Added a new helper function Remove-SqlModuleStub for tests to remove the PowerShell SqlServer stub module when a test has run.
  • SqlWindowsFirewall
    • Added integration tests for SqlWindowsFirewall (issue #747).
  • Get-DscProperty
    • Added parameter ExcludeName to exclude property names from being returned.

Changed

  • SqlServerDsc
    • Updated pipeline to use the build worker image 'ubuntu-latest'.
    • Switch to installing GitVersion using 'dotnet tool install' (issue #1732).
    • Bumped Stale task to v5 in the GitHub workflow.
    • Make it possible to publish code coverage on failed test runs, and when re-run a fail job.
    • Exclude Script Analyzer rule TypeNotFound in the file .vscode/analyzersettings.psd1.
    • Update CONTRIBUTING.md describing error handling in commands and class-based resources.
    • The QA tests are now run in Windows PowerShell due to a bug in PowerShell 7 that makes class-based resource using inheritance to not work.
    • The QA test are excluding the rule TypeNotFound because it cannot run on the source files (there is a new issue that is tracking so this rule is only run on the built module).
    • The Pester code coverage has been switched to use the older functionality that uses breakpoints to calculate coverage. Newer functionality sometimes throw an exception when used in conjunction with class-based resources.¨
    • SMO stubs (used in the unit tests)
      • Was updated to remove a bug related to the type DatabasePermissionInfo when used with the type DatabasePermissionSet. The stubs suggested that the property PermissionType (of type DatabasePermissionSet) in DatabasePermissionInfo should have been a array DatabasePermissionSet[]. This conflicted with real SMO as it does not pass an array, but instead a single DatabasePermissionSet. The stubs was modified to mimic the real SMO. At the same time some old mock code in the SMO stubs was removed as it was no longer in use.
      • Was updated to remove a bug related to the type ServerPermissionInfo when used with the type ServerPermissionSet. The stubs suggested that the property PermissionType (of type ServerPermissionSet) in ServerPermissionInfo should have been a array ServerPermissionSet[]. This conflicted with real SMO as it does not pass an array, but instead a single ServerPermissionSet. The stubs was modified to mimic the real SMO. At the same time some old mock code in the SMO stubs was removed as it was no longer in use.
    • Updated integration tests README.md to describe how to use Appveyor to debug integration tests.
  • Wiki
    • add introduction and links to DSC technology
  • SqlServerDsc.Common
    • The parameter SetupCredential of the function Connect-SQL was renamed to Credential and the parameter name SetupCredential was made a parameter alias.
  • SqlLogin
    • BREAKING CHANGE: The parameters LoginMustChangePassword, LoginPasswordExpirationEnabled, and LoginPasswordPolicyEnforced no longer have a default value of $true. This means that when creating a new login, and not specifically setting these parameters to $true in the configuration, the login that is created will have these properties set to $false.
    • BREAKING CHANGE: LoginMustChangePassword, LoginPasswordExpirationEnabled, and LoginPasswordPolicyEnforced parameters no longer enforce default values (issue #1669).
  • SqlServerDsc
    • All tests have been converted to run in Pester 5 (Pester 4 can no longer be supported) (issue #1654).
    • Pipeline build and deploy now runs on Ubuntu 18.04, see more information in actions/runner-images#3287.
    • Update the pipeline file azure-pipelines.yml to use the latest version from the Sampler project.
  • SqlRs
    • BREAKING CHANGE: Now the Reporting Services is always restarted after the call to CIM method SetDatabaseConnection when setting up the Reporting Services. This so to try to finish the initialization of Reporting Services. This was prior only done for SQL Server Reporting Services 2019 (issue #1721).
    • Added some verbose messages to better indicate which CIM methods are run and when they are run.
    • Minor refactor to support running unit test with strict mode enabled.
  • SqlLogin
    • Only enforces optional parameter LoginType when it is specified in the configuration.
    • Only enforces optional parameters LoginPasswordExpirationEnabled and LoginPasswordPolicyEnforced for a SQL login when the parameters are specified in the configuration.
    • A localized string for an error message was updated to correctly reflect the code that says that to use a SQL login the authentication mode must be either Mixed or Normal, prio it just stated Mixed.
  • SqlSecureConnection
    • BREAKING CHANGE: Now Get-TargetResource returns the value 'Empty' for the property thumbprint if there is no thumbprint set in the current state. Returning the value 'Empty' was always intended, but it due to a bug it was never returned, but instead it returned an empty string or $null value.
  • SqlWindowsFirewall
    • Now the property Features always return the features in the order 'SQLENGINE', 'RS', 'AS', and 'IS' if they are installed.
  • SqlAGListener
    • Removed unnecessary exception that is very unlikely to be thrown in Set-TargetResource and Test-TargetResource.
    • Simplified the logic that checks if the properties are in desired state as the new unit tests did not pass with the previous logic.
    • Updated the verbose message when the listener does not exist to write out the name of the listener that is meant to be updated, added, or dropped.
    • Only update values for the properties that are actually enforced by the configuration.
  • SqlAGDatabase
    • Added StatementTimeout optional parameter with default value of 600 seconds (10 mins) to SqlAGDatabase to fix issue #1743. Users will be able to specify the backup and restore timeout with it.
  • SqlDatabaseUser
    • Test-TargetResource returns true if the IsUpdateable property of the database is $false to resolve issue #1748.
  • SqlDatabaseRole
    • Test-TargetResource returns true if the IsUpdateable property of the database is $false to resolve issue #1750.
  • SqlAlwaysOnService
    • BREAKING CHANGE: The parameter IsHadrEnabled is no longer returned by Get-TargetResource. The Ensure parameter now returns Present if Always On High Availability Diaster Recovery is enabled and Absent if it is disabled.
  • SqlDatabasePermission
    • BREAKING CHANGE: The resource has been refactored. The parameters ParameterState and Permissions has been replaced by parameters Permission, PermissionToInclude, and PermissionToExclude. These permissions parameters are now an instance of the type DatabasePermission. The type DatabasePermission contains two properties; State and Permission. This fixes issue issue #1555.
    • The resource was refactored into a class-based resource.
    • Made the resource derive from SqlResourceBase to clean up the code a bit.
  • SqlPermission
    • BREAKING CHANGE: The resource has been refactored. The parameters Permissions has been replaced by parameters Permission, PermissionToInclude, and PermissionToExclude. These permissions parameters are now an instance of the type ServerPermission. The type ServerPermission contains two properties; State and Permission. This closes the issue issue #1761, it also fixes the issues issue #1773, issue #1704, and issue #752.
    • The resource was refactored into a class-based resource.
    • Made the resource derive from SqlResourceBase to clean up the code a bit.
  • Class ResourceBase
    • Renamed the hidden property that derived classes can specify which properties to not enforce when comparing desired state against current state. New name of the hidden property is ExcludeDscProperties.
  • SqlAudit
    • Fix documentation that contain minor style errors.

Fixed

  • SqlServerDsc
    • URLs the referenced TechNet in the documentation has been update to link to new pages at docs.microsoft.com.
    • Fix pipeline so code coverage is published on fail.
    • Remove duplicate deploy step (already present in azure-pipelines.yml).
  • CommonTestHelper
    • The test helper function Import-SqlModuleStub was using wrong casing for one of the stub modules which failed test when running cross plattform.
  • SqlDatabaseObjectPermission
    • Fix for issue (issue #1724).
      • BREAKING CHANGE: Updated class DSC_DatabaseObjectPermission.
        • Changed Permission from an array to a string.
        • Updated Permission to a key property.
        • Updated Integration Tests to test permission grants on multiple objects.
  • SqlProtocolTcpIp
    • Output verbose information in integration tests so it is shown what NICs are available and what IP address the tests will use.
  • SqlAlias
    • Now the code passes strict mode during unit testing.
    • When an existing alias existed with a static TCP port but the desired state was to have a dynamic port, the function Test-TargetResource did not correctly return $false. Same for an alias that existed with a dynamic port but the desired state was to have a static port. Now the function Test-TargetResource returns $false in both these scenarios.
  • SqlAgentOperator
    • In a certain case the Test-TargetResource function returned the wrong verbose message. If passing an e-mail address and the operator did not exist it would wrongly say operator exist but had wrong e-mail address. Truth was that the operator did not exist at all.
  • SqlDatabaseMail
    • Improved the verification of an empty description so that it can handle both empty string and $null.
  • SqlDatabaseRole
    • Some variables where not initialized correctly which was discovered when running the unit tests using strict mode. Now the variables are initialized and should not cause any issues in the object returned from the function Get-TargetResource.
  • SqlEndpointPermission
    • Verbose messages did not use the correct variable name, so the messages did not contain the correct information.
    • Minor style guideline changes.
  • SqlMaxDop
    • The function Get-TargetResource did not initialize some of the variables correctly which was discovered when running the unit tests using strict mode.
    • The function Test-TargetResource did not correctly evaluate if the node was the active node..
  • SqlMemory
    • Now it possible to just set the minimum memory without it throwing because the maximum memory is not specified.
    • In a certain scenario the maximum memory would be enforced even if it was not specified in the configuration.
  • SqlWindowsFirewall
    • Now the variables in Get-TargetResource are correctly initialized so they pass the new unit test that use strict mode.
    • The verbose message in Test-TargetResource did not use the correct variable name, so the message did not contain the correct information.
    • Removed unnecessary logic in Set-TargetResource that did just evaluated the same thing that the call to function Get-TargetResource already does.
  • SqlSetup
    • Now the variables in Set-TargetResource are correctly initialized so they pass the new unit test that use strict mode.
    • Some verbose messages in Get-TargetResource wrongly reference a variable that was not available.
    • The loop that evaluates what features are installed did an unnecessary step for each iteration. A line of code was moved outside of the loop.
    • The SourcePath parameter is now mandatory for all *-TargetResource (issue #1755).
  • SqlDatabasePermission
    • It is no longer possible to have one permission that has two different states in the same configuration, e.g. denying and granting update in the same configuration.
    • Fixed comment-based help and cleaned up comments.
    • Fix localized string that referenced 'user' instead of 'principal', and correct localized string ID for each string.
    • Fix comment-based help.
  • SqlPermission
    • Fix comment-based help.
  • Set-SqlDscDatabasePermission
    • Minor code cleanup.
  • ConvertTo-Reason
    • Fix to handle $null values on Windows PowerShell.
    • If the property name contain the word 'Path' the value will be parsed to replace backslash or slashes at the end of the string, e.g. '/myPath/' will become '/myPath'.
  • ResourceBase
    • Now handles Ensure correctly from derived GetCurrentState(). But requires that the GetCurrentState() only return key property if object is present, and does not return key property if object is absent. Optionally the resource's derived GetCurrentState() can handle Ensure itself.

[15.2.0] - 2021-09-01

Changed

  • SqlServerDsc
    • Changed to the new GitHub deploy tasks that is required for the latest version of the Sampler module.
    • Updated pipeline configuration to align with the latest changes in Sampler.
    • Update codecov.yml to support carry forward flags.
    • Updated pipelines files to latest from Sampler project.
    • Updated GitHub issue templates.
    • Remove pipeline jobs Test_Integration_SQL2016, Test_Integration_SQL2017, and Test_Integration_SQL2019 and replaced with a single job Test_Integration (issue #1713).
    • Update HQRM tests to run on the VM image windows-2022.
    • Update unit tests to run on the VM image windows-2022.
    • Update integration tests to run both on Windows Server 2019 and Windows Server 2022 (issue #1713).
    • Switched to a new Linux build worker for the pipeline (issue #1729).
  • SqlSetup
    • The helper function Connect-SqlAnalysis was using LoadWithPartial() to load the assembly Microsoft.AnalysisServices. On a node where multiple instances with different versions of SQL Server (regardless of features) is installed, this will result in the first assembly found in the GAC will be loaded into the session, not taking versions into account. This can result in an assembly version being loaded that is not compatible with the version of SQL Server it was meant to be used with. A new method of loading the assembly Microsoft.AnalysisServices was introduced under a feature flag; 'AnalysisServicesConnection'. This new functionality depends on the SqlServer module, and must be present on the node. The SqlServer module can be installed on the node by leveraging the new DSC resource PSModule in the PowerShellGet module (v2.1.2 and higher). This new method does not work with the SQLPS module due to the SQLPS module does not load the correct assembly, while SqlServer module (v21.1.18080 and above) does. The new functionality is used when the parameter FeatureFlag is set to 'AnalysisServicesConnection'. This functionality will be the default in a future breaking release.
    • Under a feature flag 'AnalysisServicesConnection'. The detection of a successful connection to the SQL Server Analysis Services has also been changed. Now it actually evaluates the property Connected of the returned Microsoft.AnalysisServices.Server object. The new functionality is used when the parameter FeatureFlag is set to 'AnalysisServicesConnection'. This functionality will be the default in a future breaking release.
  • SqlAgentAlert
    • Switched README file with SqlAgentFailsafe (issue #1709).
  • SqlAgentFailsafe
    • Switched README file with SqlAgentAlert (issue #1709).

Added

  • SqlMemory
    • Added two new optional parameters MinMemoryPercent and MaxMemoryPercent. Provides the ability to set the minimum and/or maximum buffer pool used by the SQL Server instance as a percentage of total server memory. (issue #1397).
  • SqlRSSetup
    • Integration tests now install Microsoft SQL Server 2019 Reporting Services (issue #1717).
  • SqlRS
    • Integration tests now configures Microsoft SQL Server 2019 Reporting Services.

Fixed

  • SqlSetup
    • Fixed integration tests for SQL Server 2016 and SQL Server 2017.
  • SqlServerDsc.Common
    • Fixed so that CredScan no longer reports a password false-positive (issue #1712).
  • SqlRS
    • Fixed SSRS 2019 initialization (issue #1509).
    • Fix a problem that did not correctly evaluate the UseSSL property against the current state.

[15.1.1] - 2021-02-12

Fixed

  • SqlTraceFlag
    • Fixed $null reference error when no actual trace flags are present. Added two arrays to prevent a $null reference at compare-object (issue #1688).
  • SqlServerDsc
    • Removed a left-over comment in the file analyzersettings.psd1.

[15.1.0] - 2021-02-02

Added

  • SqlServerDsc
    • Added a new script analyzer rule to verify that Import-SQLPSModule or Connect-SQL (that implicitly calls Import-SQLPSModule) is present in each Get-, Test-, and Set-TargetResource function. If neither command is not needed then the analyzer rule should be overridden (issue #1683).
    • Added a new pipeline job that runs Script Analyzer on all PowerShell scripts in the source folder. The rules are defined by the Script Analyzer settings file .vscode\analyzersettings.psd1 (which also the Visual Studio Code PowerShell extension uses).
    • Added unit tests and integration tests for SQL Server 2019 (issue #1310).

Changed

  • SqlServerDsc
    • Suppressed new custom Script Analyzer rule SqlServerDsc.AnalyzerRules\Measure-CommandsNeededToLoadSMO for Get-, Test-, and Set-TargetResource functions in the resources.
  • SqlLogin
    • Added functionality to throw exception if an update to the LoginMustChangePassword value on an existing SQL Login is attempted. This functionality is not supported by referenced, SQL Server Management Object (SMO), libraries and cannot be supported directly by this module.
    • Added integration tests to ensure that an added (or updated) SqlLogin can connect into a SQL instance once added (or updated).
    • Added integration tests to ensure that the default database connected to by a SqlLogin is the same as specified in the resource's DefaultDatabase property/parameter.
    • Amended how the interdependent, PasswordExpirationEnabled and PasswordPolicyEnforced properties/parameters are updated within the SqlLogin resource - Both values are now updated together if either one or both are not currently in the desired state. This change avoids exceptions thrown by transitions to valid, combinations of these properties that have to transition through an invalid combination (e.g. where PasswordExpirationEnabled is $true but PasswordPolicyEnforced is $false).
  • SqlSetup
    • Minor refactor due to source code lint errors. The loop what evaluates the configuration parameters *FailoverCluster was change to a foreach().

Fixed

  • SqlServerDsc
    • The component gitversion that is used in the pipeline was wrongly configured when the repository moved to the new default branch main. It no longer throws an error when using newer versions of GitVersion (issue #1674).
    • Minor lint errors throughout the repository.
  • SqlLogin
    • Added integration tests to assert LoginPasswordExpirationEnabled, LoginPasswordPolicyEnforced and LoginMustChangePassword properties/parameters are applied and updated correctly. Similar integration tests also added to ensure the password of the SqlLogin is updated if the password within the SqlCredential value/object is changed (issue #361, issue #1032 and issue #1050).
    • Updated SqlLogin, integration tests to make use of amended Wait-ForIdleLcm, helper function, -Clear switch usage to remove intermittent, integration test failures (issue #1634).
  • SqlRSSetup
    • If parameter SuppressRestart is set to $false the /norestart argument is no longer wrongly added (issue #1401).
  • SqlSetup
    • Added/corrected InstallSharedDir, property output when using SQL Server 2019.
  • SqlTraceFlag
  • SqlDatabaseUser
    • Added parameter ServerName to the call of Assert-SqlLogin. @PSBoundParameters doesn't capture the default value of ServerName when it is not explicitly set by the caller (issue #1647).

[15.0.1] - 2021-01-09

Changed

  • SqlServerDsc
    • Renamed master branch to main (issue #1660).
    • The module manifest property DscResourcesToExport now updates automatically using the pipeline.
    • Removed Export-ModuleMember from DSC resource that still had it.
    • The variable $env:COMPUTERNAME does not exist cross-platform which hinders development and testing on macOS and Linux. Instead the resources have been update to use the helper function Get-ComputerName which returns the current computer name cross-plattform.
    • Switch to GitHub Action Stale instead of GitHub App (Probot) Stale.

Fixed

  • SqlAGDatabase
    • Fix for issue (issue #1492) added AutomaticSeeding for this resource. In Set-TargetResource added logic that looks at all replicas of an availability group. When automatic seeding is found, it will use that.
    • Lots of extra tests to check AutomaticSeeding.
    • The parameter BackupPath is still needed just in case a database never has been backed up before.
    • Fixed a typo.
  • SqlMaxDop
    • Fixes (issue #396). Added three return values in Get-Target resource.
  • SqlProtocol
    • Changed KeepAlive Type from UInt16 to Int32 to reflect the actual WMI.ManagementObject Fixes #1645 (issue #1645).
    • The verbose messages now correctly show that $env:COMPUTERNAME is used to get or set the configuration, while parameter ServerName is used to restart the instance.
  • SqlProtocolTcpIp
    • The verbose messages now correctly show that $env:COMPUTERNAME is used to get or set the configuration, while parameter ServerName is used to restart the instance.
  • SqlDatabaseMail
    • Now if a non-mandatory property is not part of the configuration it will not be enforced (issue #1661).
  • SqlSetup
    • When the SqlSetup detects that the expected components was not installed and consequently throws an exception, that exception message now presents a link to an article on how to find the SQL Server setup logs (issue #1420).
  • SqlRSSetup
    • If parameter EditionUpgrade is set to $false the /EditionUpgrade argument is no longer wrongly added (issue #1398).
  • SqlServerDsc.Common
    • Updated Get-ServerProtocolObject, helper function to ensure an exception is thrown if the specified instance cannot be obtained (issue #1628).

[15.0.0] - 2020-12-06

Added

  • SqlServerDsc
    • Added new resource SqlTraceFlag to set or changes TraceFlags on SQL Server. This resource is based on @Zuldans code but with SqlServerDsc integrated SMO. Credits: https://github.com/Zuldan/cSQLServerTraceFlag
    • Added a lot of test scripts to validated the code.
  • SqlEndpoint
    • Added support for the Service Broker Endpoint (issue #498).
  • SqlDatabaseRole
    • Added test to ensure Add-SqlDscDatabaseRoleMember throws the expected error (issue #1620).

Changed

  • SqlServerDsc
    • Updated code formatting using latest release of PSScriptAnalyzer.
    • The URLs in the CHANGELOG.md that was pointing to issues is now referencing the new repository name and URL.
  • SqlServerDsc.Common
    • The helper function Get-SqlInstanceMajorVersion no longer have a default value for parameter InstanceName since the parameter is mandatory and it was never used.
  • SqlReplication
    • The resource are now using the helper function Get-SqlInstanceMajorVersion (issue #1408).
  • SqlRole
    • Major overhaul of resource.
    • BREAKING CHANGE: Removed decision making from get-TargetResource; this prevented a simple solution for issue #550. it now just tels if a role exists or not. And what members are in that role. MembersToInclude and MembersToExclude now always return $null.
    • Added sanitize function (Get-CorrectedMemberParameters) to make it so for the sysadmin role SA does not get altered (issue #550).
    • Added lots of tests.
  • SqlWaitForAG
    • BREAKING CHANGE: Fix for issue (issue #1569) The resource now waits for the Availability Group to become Available.
    • Two parameters where added to test get and set resource at instance level.
  • SqlSetup
    • Minor change to the evaluation of the parameter BrowserSvcStartupType, if it has an assigned a value or not.

Fixed

  • SqlDatabaseRole
    • Fixed check to see if the role and user existed in the database. The previous logic would always indicate the role or user was not found unless the role had the same name as the user. Also updated the DesiredMembersNotPresent string to be more accurate when an extra user is in the role (issue #1487).
  • SqlAlwaysOnService
    • Updated Get-TargetResource to return all defined schema properties (issue #150).
  • SqlSetup
    • Added a note to the documentation that the parameter BrowserSvcStartupType cannot be used for configurations that utilize the 'InstallFailoverCluster' action (issue #1627).
  • SqlDatabaseObjectPermission
    • Updated unit tests to remove errors relating to missing Where() method (issue #1648).

[14.2.1] - 2020-08-14

Changed

  • SqlServerDsc
    • Document changes in the file build.yml.
    • The regular expression for major-version-bump-message in the file GitVersion.yml was changed to only raise major version when the commit message contain the phrase breaking change, or when it contain the word breaking or major.
  • SqlSetup
    • Duplicate function Get-SqlMajorVersion was removed and instead the helper function Get-FilePathMajorVersion from the helper module SqlServerDsc.Common is used (issue #1178).
  • SqlWindowsFirewall
    • Duplicate function Get-SqlMajorVersion was removed and instead the helper function Get-FilePathMajorVersion from the helper module SqlServerDsc.Common is used (issue #1178).
  • SqlServerDsc.Common
    • Function Get-FilePathMajorVersion was added. The function Get-SqlMajorVersion from the resources SqlSetup and SqlWindowsFirewall was moved and renamed without any functional changes (issue #1178).

Fixed

  • SqlServerDsc
    • Removed helper functions that was moved to the module DscResource.Common. DSC resources using those functions are using them from the module DscResource.Common.
  • SqlDatabaseObjectPermission
    • Fixed method invocation failed because of missing Where() method (issue #1600).
      • New integration tests to verify scenarios when passing a single permission.
    • To enforce a scenario where a permission must be changed from 'GrantWithGrant' to 'Grant' a new parameter Force was added (issue #1602). The parameter Force is used to enforce the desired state in those scenarios where revocations must be performed to enforce the desired state, even if that encompasses cascading revocations. If parameter Force is not set to $true an exception is thrown in those scenarios where a revocation must be performed to enforce the desired state.
      • New integration tests to verify scenarios when current state for a permission is 'GrantWithGrant' but desired state should be 'Grant'.
  • SqlSetup
    • The example 4-InstallNamedInstanceInFailoverClusterFirstNode.ps1 was updated to no longer reference the issue #405 and issue #444 in the comment-based help. The issues was fixed a while back and SqlSetup now supports the built-in parameter PsDscRunAsCredential (issue #975).

[14.2.0] - 2020-07-23

Fixed

  • SqlServerDsc
    • Updated comment-based help according to style guideline throughout (issue #1500).
    • Using Codecov carry forward flag because we are not sending code coverage report on each commit.
  • CommonTestHelper
    • Minor style changes.
  • SqlSetup
    • Updated the documentation with the currently supported features (issue #1566).
    • Update documentation around permissions in directory tree for Analysis Services (issue #1443).
    • Documented that on certain operating systems, when using least privilege for the service account, the security policy setting Network access: Restrict clients allowed to make remote calls to SAM can result in a access denied error during install of the SQL Server Database Engine (issue #1559).
  • SqlRole
    • Fixed the ServerName parameter to work with default value of $env:COMPUTERNAME (issue #1592).

[14.1.0] - 2020-07-06

Removed

  • SqlServerDsc
    • Remove the file .github/CONTRIBUTION.md as it no longer filled any purpose as GitHub will find the CONTRIBUTION.md in the root folder directly now (issue #1227).

Changed

  • SqlServerDsc
    • Updated DSC resources parameter documentation.

Fixed

  • SqlServerDsc
    • Update resource parameter documentation (issue #1568).
      • Remove italic and inline code-block markdown code in documentation.
    • Documentation is now published to the GitHub Wiki.
      • Deploy task was updated with the correct name.
    • Minor changes too schema property descriptions to generate documentation correctly.
    • Updated task list in the PULL_REQUEST_TEMPLATE.md.
    • The documentation in CONTRIBUTING.md has been somewhat updated.
    • Update documentation around design pattern for accounts that does not use passwords (issue #378) and (issue #1230).
    • Updating the Integration Test README.md to better explain what the integration tests for SqlSetup, SqlRSSetup, and SqlRS does (issue #1315).
  • SqlServerDsc.Common
    • Connect-UncPath
      • Now support to authenticate using both NetBIOS domain and Fully Qualified Domain Name (FQDN) (issue #1223).
    • Connect-SQL
      • Now support to authenticate using both NetBIOS domain and Fully Qualified Domain Name (FQDN) (issue #1223).
    • Connect-SQLAnalysis
      • Now support to authenticate using both NetBIOS domain and Fully Qualified Domain Name (FQDN) (issue #1223).
  • SqlAGReplica
    • Update documentation with a requirement for SqlServer in certain circumstances (issue #1033).
  • SqlRSSetup
    • There was a typo in the error message that was thrown when not passing either the Edition or ProductKey that could be misleading (issue #1386).
    • Updated the parameter descriptions for the parameters Edition and ProductKey that they are mutually exclusive (issue #1386).
  • SqlWindowsFirewall
    • Now support to authenticate using both NetBIOS domain and Fully Qualified Domain Name (FQDN) (issue #1223).
  • SqlDatabaseObjectPermission
    • Since the task that publish Wiki content was updated to correctly handle embedded instances the duplicate documentation was removed from the resource README.md, and some was added to the schema MOF parameter descriptions (issue #1580).
  • SqlScript
    • Fixed the URLs in the parameter documentation (issue #1582).
  • SqlScriptQuery
    • Fixed the URLs in the parameter documentation (issue #1583).

Added

  • SqlScript
  • SqlScriptQuery

[14.0.0] - 2020-06-12

Remove

  • SqlServerDsc
    • BREAKING CHANGE: Since the operating system Windows Server 2008 R2 and the product SQL Server 2008 R2 has gone end-of-life the DSC resources will no longer try to maintain compatibility with them. Moving forward, and including this release, there may be code changes that will break the resource on Windows Server 2008 R2 or with SQL Server 2008 R2 (issue #1514).

Deprecated

The documentation, examples, unit test, and integration tests have been removed for these deprecated resources. These resources will be removed in a future release.

  • SqlDatabaseOwner
    • This resource is now deprecated. The functionality is now covered by a property in the resource SqlDatabase (issue #966).
  • SqlDatabaseRecoveryModel
    • This resource is now deprecated. The functionality is now covered by a property in the resource SqlDatabase (issue #967).
  • SqlServerEndpointState
    • This resource is now deprecated. The functionality is covered by a property in the resource SqlEndpoint (issue #968).
  • SqlServerNetwork
    • This resource is now deprecated. The functionality is now covered by the resources SqlProtocol and SqlProtocolTcpIp.

Added

  • SqlSetup
    • Added support for major version upgrade (issue #1561).
  • SqlServerDsc
    • Added new resource SqlProtocol (issue #1377).
    • Added new resource SqlProtocolTcpIp (issue #1378).
    • Added new resource SqlDatabaseObjectPermission (issue #1119).
    • Fixing a problem with the latest ModuleBuild 1.7.0 that breaks the CI pipeline.
    • Prepare repository for auto-documentation by adding README.md to each resource folder with the content from the root README.md.
  • SqlServerDsc.Common
    • Added function Import-Assembly that can help import an assembly into the PowerShell session.
    • Prepared unit tests to support Pester 5 so a minimal conversation is only needed later.
    • Updated Import-SQLPSModule to better support unit tests.
  • CommonTestHelper
    • Added the functions Get-InvalidOperationRecord and Get-InvalidResultRecord that is needed for evaluate localized error message strings for unit tests.
  • SqlEndpoint
    • BREAKING CHANGE: A new required property EndpointType was added to support different types of endpoints in the future. For now the only endpoint type that is supported is the database mirror endpoint type (DatabaseMirroring).
    • Added the property State to be able to specify if the endpoint should be running, stopped, or disabled. This property was moved from the now deprecated DSC resource SqlServerEndpointState.
  • SqlSetup
    • A read only property IsClustered was added that can be used to determine if the instance is clustered.
    • Added the properties NpEnabled and TcpEnabled (issue #1161).
    • Added the property UseEnglish (issue #1473).
  • SqlReplication
  • SqlDatabase
    • The property OwnerName was added.
  • SqlDatabasePermission
    • Now possible to change permissions for database user-defined roles (e.g. public) and database application roles (issue #1498.
  • SqlServerDsc.Common
    • The helper function Restart-SqlService was improved to handle Failover Clusters better. Now the SQL Server service will only be taken offline and back online again if the service is online to begin with.
    • The helper function Restart-SqlServer learned the new parameter OwnerNode. The parameter OwnerNode takes an array of Cluster node names. Using this parameter the cluster group will only be taken offline and back online if the cluster group owner is one specified in this parameter.
    • The helper function Compare-ResourcePropertyState was improved to handle embedded instances by adding a parameter CimInstanceKeyProperties that can be used to identify the unique parameter for each embedded instance in a collection.
    • The helper function Test-DscPropertyState was improved to evaluate the properties in a single CIM instance or a collection of CIM instances by recursively call itself.
    • When the helper function Test-DscPropertyState evaluated an array the verbose messages was not very descriptive. Instead of outputting the side indicator from the compare it now outputs a descriptive message.

Changed

  • SqlServerDsc
    • BREAKING CHANGE: Some DSC resources have been renamed (issue #1540).
      • SqlServerConfiguration was renamed to SqlConfiguration.
      • SqlServerDatabaseMail was renamed to SqlDatabaseMail.
      • SqlServerEndpoint was renamed to SqlEndpoint.
      • SqlServerEndpointPermission was renamed to SqlEndpointPermission.
      • SqlServerLogin was renamed to SqlLogin.
      • SqlServerMaxDop was renamed to SqlMaxDop.
      • SqlServerMemory was renamed to SqlMemory.
      • SqlServerPermission was renamed to SqlPermission.
      • SqlServerProtocol was renamed to SqlProtocol.
      • SqlServerProtocolTcpIp was renamed to SqlProtocolTcpIp.
      • SqlServerReplication was renamed to SqlReplication.
      • SqlServerRole was renamed to SqlRole.
      • SqlServerSecureConnection was renamed to SqlSecureConnection.
    • Changed all resource prefixes from MSFT_ to DSC_ (issue #1496). Deprecated resource has not changed prefix.
    • All resources are now using the common module DscResource.Common.
    • When a PR is labelled with 'ready for merge' it is no longer being marked as stale if the PR is not merged for 30 days (for example it is dependent on something else) (issue #1504).
    • Updated the CI pipeline to use latest version of the module ModuleBuilder.
    • Changed to use the property NuGetVersionV2 from GitVersion in the CI pipeline.
    • The unit tests now run on PowerShell 7 to optimize the total run time.
  • SqlServerDsc.Common
    • The helper function Invoke-InstallationMediaCopy was changed to handle a breaking change in PowerShell 7 (issue #1530).
    • Removed the local helper function Set-PSModulePath as it was implemented in the module DscResource.Common.
  • CommonTestHelper
    • The test helper function New-SQLSelfSignedCertificate was changed to install the dependent module PSPKI through RequiredModules.psd1.
  • SqlAlwaysOnService
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlDatabase
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • BREAKING CHANGE: The non-mandatory parameters was removed from the function Get-TargetResource since they were not needed.
    • BREAKING CHANGE: The properties CompatibilityLevel and Collation are now only enforced if the are specified in the configuration.
    • Normalize parameter descriptive text for default values.
  • SqlDatabaseDefaultLocation
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlDatabaseOwner
    • BREAKING CHANGE: Database changed to DatabaseName for consistency with other modules (issue #1484).
  • SqlDatabasePermission
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
    • BREAKING CHANGE: Database changed to DatabaseName for consistency with other modules (issue #1484).
    • BREAKING CHANGE: The resource no longer create the database user if it does not exist. Use the resource SqlDatabaseUser to enforce that the database user exist in the database prior to setting permissions using this resource (issue #848).
    • BREAKING CHANGE: The resource no longer checks if a login exist so that it is possible to set permissions for database users that does not have a login, e.g. the database user 'guest' (issue #1134).
    • Updated examples.
    • Added integration tests (issue #741).
    • Get-TargetResource will no longer throw an exception if the database does not exist.
  • SqlDatabaseRecoveryModel
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlDatabaseRole
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
    • BREAKING CHANGE: Database changed to DatabaseName for consistency with other modules (issue #1484).
  • SqlDatabaseUser
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlScript
    • BREAKING CHANGE: The parameter ServerInstance is replaced by the two parameters ServerName and InstanceName. The parameter InstanceName is the only one mandatory which fixes the issue that it was possible to run the same script using different host names (issue #925).
  • SqlScriptQuery
    • BREAKING CHANGE: The parameter ServerInstance is replaced by the two parameters ServerName and InstanceName. The parameter InstanceName is the only one mandatory which fixes the issue that it was possible to run the same query using different host names (issue #925).
  • SqlConfiguration
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlDatabaseMail
    • Normalize parameter descriptive text for default values.
  • SqlEndpoint
    • BREAKING CHANGE: Now the properties are only enforced if they are specified in the configuration.
    • Normalize parameter descriptive text for default values.
  • SqlEndpointPermission
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlLogin
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlRole
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlServiceAccount
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory and defaults to $env:COMPUTERNAME (issue #319).
    • Normalize parameter descriptive text for default values.
  • SqlSetup
    • BREAKING CHANGE: Now if the parameter AgtSvcStartupType is not specified in the configuration the resource will no longer by default add an argument to setup.exe with a value of Automatic for the argument AGTSVCSTARTUPTYPE. If the parameter AgtSvcStartupType is not specified in the configuration there will be no setup argument added at all (issue #464).
    • BREAKING CHANGE: When installing a failover cluster the cluster validation is no longer skipped by default. To skip cluster validation the configuration must opt-in by specifying the following SkipRule = 'Cluster_VerifyForErrors' (issue #335).
    • BREAKING CHANGE: Now, unless the parameter SuppressReboot is set to $true, the node will be restarted if the setup ends with the error code 3010. Previously just a warning message was written (issue #565).

Fixed

  • SqlServerDsc
    • The regular expression for minor-version-bump-message in the file GitVersion.yml was changed to only raise minor version when the commit message contain the word add, adds, minor, feature, or features.
    • Now code coverage is reported to Codecov, and a codecov.yml was added.
    • Updated to support DscResource.Common v0.7.1.
    • Changed to point to CONTRIBUTING.md on master branch to avoid "404 Page not found" (issue #1508).
  • SqlAGDatabase
    • Fixed unit tests that failed intermittently when running unit tests in PowerShell 7 (issue #1532).
    • Minor code style issue changes.
  • SqlAgentAlert
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlAgentFailsafe
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlAgentOperator
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlAlias
    • BREAKING CHANGE: The parameter ServerName is now non-mandatory to prevent ping-pong behavior (issue #1502). The ServerName is not returned as an empty string when the protocol is Named Pipes.
  • SqlDatabase
    • Fixed missing parameter CompatibilityLevel in the README.md (and updated the description in the schema.mof).
  • SqlRs
    • Fix typo in the schema parameter SuppressRestart description and in the parameter description in the README.md.
  • SqlDatabaseMail
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlServerEndpoint
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlEndpoint
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlPermission
    • The parameter ServerName now throws when passing an empty string or null value (part of issue #319).
  • SqlReplication
    • Enhanced the exception handling so it shows the inner exception error message that have the actual error that occurred.
    • Corrected the examples.
  • SqlSetup
    • Update integration tests to correctly detect sysadmins because of changes to the build worker.
    • The property SqlTempdbLogFileGrowth and SqlTempdbFileGrowth now returns the correct values. Previously the value of the growth was wrongly divided by 1KB even if the value was in percent. Now the value for growth is the sum of the average of MB and average of the percentage.
    • The function Get-TargetResource was changed so that the property SQLTempDBDir will now return the database tempdb's property PrimaryFilePath.
    • BREAKING CHANGE: Logic that was under feature flag DetectionSharedFeatures was made the default and old logic that was used to detect shared features was removed (issue #1290). This was implemented because the previous implementation did not work fully with SQL Server 2017.
    • Much of the code was refactored into units (functions) to be easier to test. Due to the size of the code the unit tests ran for an abnormal long time, after this refactoring the unit tests runs much quicker.

[13.5.0] - 2020-04-12

Added

  • SqlServerLogin

Changed

  • SqlServerDsc
    • Update the CI pipeline files.
    • Only run CI pipeline on branch master when there are changes to files inside the source folder.
    • Replaced Microsoft-hosted agent (build image) win1803 with windows-2019 (issue #1466).

Fixed

  • SqlSetup
    • Refresh PowerShell drive list before attempting to resolve setup.exe path (issue #1482).
  • SqlAG
    • Fix hashtables to align with style guideline (issue #1437).

[13.4.0] - 2020-03-18

Added

  • SqlDatabase
    • Added ability to manage the Compatibility Level and Recovery Model of a database

Changed

  • SqlServerDsc
    • Azure Pipelines will no longer trigger on changes to just the CHANGELOG.md (when merging to master).
    • The deploy step is no longer run if the Azure DevOps organization URL does not contain 'dsccommunity'.
    • Changed the VS Code project settings to trim trailing whitespace for markdown files too.

[13.3.0] - 2020-01-17

Added

  • SqlServerDsc
    • Added continuous delivery with a new CI pipeline.
      • Update build.ps1 from latest template.

Changed

  • SqlServerDsc
    • Add .gitattributes file to checkout file correctly with CRLF.
    • Updated .vscode/analyzersettings.psd1 file to correct use PSSA rules and custom rules in VS Code.
    • Fix hashtables to align with style guideline (issue #1437).
    • Updated most examples to remove the need for the variable $ConfigurationData, and fixed style issues.
    • Ignore commit in GitVersion.yml to force the correct initial release.
    • Set a display name on all the jobs and tasks in the CI pipeline.
    • Removing file 'Tests.depend.ps1' as it is no longer required.
  • SqlServerMaxDop
    • Fix line endings in code which did not use the correct format.
  • SqlAlwaysOnService
    • The integration test has been temporarily disabled because when the cluster feature is installed it requires a reboot on the Windows Server 2019 build worker.
  • SqlDatabaseRole
    • Update unit test to have the correct description on the Describe-block for the test of Set-TargetResource.
  • SqlServerRole
    • Add support for nested role membership (issue #1452)
    • Removed use of case-sensitive Contains() function when evaluating role membership. (issue #1153)
    • Refactored mocks and unit tests to increase performance. (issue #979)

Fixed

  • SqlServerDsc
    • Fixed unit tests to call the function Invoke-TestSetup outside the try-block.
    • Update GitVersion.yml with the correct regular expression.
    • Fix import statement in all tests, making sure it throws if module DscResource.Test cannot be imported.
  • SqlAlwaysOnService
    • When failing to enable AlwaysOn the resource should now fail with an error (issue #1190).
  • SqlAgListener
    • Fix IPv6 addresses failing Test-TargetResource after listener creation.

[13.2.0.0] - 2019-09-18

Changed

  • Changes to SqlServerDsc
    • Fix keywords to lower-case to align with guideline.
    • Fix keywords to have space before a parenthesis to align with guideline.
    • Fix typo in SqlSetup strings (issue #1419).

[13.1.0.0] - 2019-08-07

Changed

  • Changes to SqlServerDsc
    • New DSC resource SqlAgentFailsafe
    • New DSC resource SqlDatabaseUser (issue #846).
      • Adds ability to create database users with more fine-grained control, e.g. re-mapping of orphaned logins or a different login. Supports creating a user with or without login name, and database users mapped to a certificate or asymmetric key.
    • Changes to helper function Invoke-Query
      • Fixes issues in issue #1355.
      • Works together with Connect-SQL now.
      • Parameters now match that of Connect-SQL (issue #1392).
      • Can now pass in credentials.
      • Can now pass in 'Microsoft.SqlServer.Management.Smo.Server' object.
      • Can also pipe in 'Microsoft.SqlServer.Management.Smo.Server' object.
      • Can pipe Connect-SQL | Invoke-Query.
      • Added default values to Invoke-Query.
      • Now it will output verbose messages of the query that is run, so it not as quiet of what it is doing when a user asks for verbose output (issue #1404).
      • It is possible to redact text in the verbose output by providing strings in the new parameter RedactText.
    • Minor style fixes in unit tests.
    • Changes to helper function Connect-SQL
      • When impersonating WindowsUser credential use the NetworkCredential UserName.
      • Added additional verbose logging.
      • Connect-SQL now uses parameter sets to more intuitive evaluate that the correct parameters are used in different scenarios (issue #1403).
    • Changes to helper function Connect-SQLAnalysis
      • Parameters now match that of Connect-SQL (issue #1392).
    • Changes to helper function Restart-SqlService
      • Parameters now match that of Connect-SQL (issue #1392).
    • Changes to helper function Restart-ReportingServicesService
      • Parameters now match that of Connect-SQL (issue #1392).
    • Changes to helper function Split-FullSqlInstanceName
      • Parameters and function name changed to use correct casing.
    • Changes to helper function Get-SqlInstanceMajorVersion
      • Parameters now match that of Connect-SQL (issue #1392).
    • Changes to helper function Test-LoginEffectivePermissions
      • Parameters now match that of Connect-SQL (issue #1392).
    • Changes to helper function Test-AvailabilityReplicaSeedingModeAutomatic
      • Parameters now match that of Connect-SQL (issue #1392).
  • Changes to SqlServerSecureConnection
    • Forced $Thumbprint to lowercase to fix issue #1350.
    • Add parameter SuppressRestart with default value false. This allows users to suppress restarts after changes have been made. Changes will not take effect until the service has been restarted.
  • Changes to SqlSetup
  • Changes to SqlDatabase
    • Get-TargetResource now correctly return $null for the collation property when the database does not exist (issue #1395).
    • No longer enforces the collation property if the Collation parameter is not part of the configuration (issue #1396).
    • Updated resource description in README.md
    • Fix examples to use PsDscRunAsCredential (issue #760).
    • Added integration tests (issue #739).
    • Updated unit tests to the latest template (issue #1068).

[13.0.0.0] - 2019-06-26

Changed

  • Changes to SqlServerDsc
    • Added SqlAgentAlert resource.
    • Opt-in to the common test 'Common Test - Validation Localization'.
    • Opt-in to the common test 'Common Test - Flagged Script Analyzer Rules' (issue #1101).
    • Removed the helper function New-TerminatingError, New-WarningMessage and New-VerboseMessage in favor of the the new localization helper functions.
    • Combine DscResource.LocalizationHelper and DscResource.Common into SqlServerDsc.Common (issue #1357).
    • Update Assert-TestEnvironment.ps1 to not error if strict mode is enabled and there are no missing dependencies (issue #1368).
  • Changes to SqlServerDsc.Common
    • Added StatementTimeout to function 'Connect-SQL' with default 600 seconds (10mins).
    • Added StatementTimeout to function 'Invoke-Query' with default 600 seconds (10mins) (issue #1358).
    • Changes to helper function Connect-SQL
      • The function now make it more clear that when using the parameter SetupCredential is impersonates that user, and by default it does not impersonates a user but uses the credential that the resource is run as (for example the built-in credential parameter PsDscRunAsCredential). @kungfu71186
      • Added parameter alias -DatabaseCredential for the parameter -SetupCredential. @kungfu71186
  • Changes to SqlAG
    • Added en-US localization.
  • Changes to SqlAGReplica
    • Added en-US localization.
    • Improved verbose message output when creating availability group replica, removing a availability group replica, and joining the availability group replica to the availability group.
  • Changes to SqlAlwaysOnService
    • Now outputs the correct verbose message when restarting the service.
  • Changes to SqlServerMemory
    • Now outputs the correct verbose messages when calculating the dynamic memory, and when limiting maximum memory.
  • Changes to SqlServerRole
    • Now outputs the correct verbose message when the members of a role is not in desired state.
  • Changes to SqlAgentOperator
    • Fix minor issue that when unable to connect to an instance. Instead of showing a message saying that connect failed another unrelated error message could have been shown, because of an error in the code.
    • Fix typo in test it block.
  • Changes to SqlDatabaseRole
  • Changes to SqlSetup
    • Add an Action type of 'Upgrade'. This will ask setup to do a version upgrade where possible (issue #1368).
    • Fix an error when testing for DQS installation (issue #1368).
    • Changed the logic of how default value of FailoverClusterGroupName is set since that was preventing the resource to be able to be debugged (issue #448).
    • Added RSInstallMode parameter (issue #1163).
  • Changes to SqlWindowsFirewall
    • Where a version upgrade has changed paths for a database engine, the existing firewall rule for that instance will be updated rather than another one created (issue #1368). Other firewall rules can be fixed to work in the same way later.
  • Changes to SqlAGDatabase
    • Added new parameter 'ReplaceExisting' with default false. This allows forced restores when a database already exists on secondary.
    • Added StatementTimeout to Invoke-Query to fix Issue#1358
    • Fix issue where calling Get would return an error because the database name list may have been returned as a string instead of as a string array (issue #1368).

[12.5.0.0] - 2019-05-15

Changed

  • Changes to SqlServerSecureConnection
    • Updated README and added example for SqlServerSecureConnection, instructing users to use the 'SYSTEM' service account instead of 'LocalSystem'.
  • Changes to SqlScript
    • Correctly passes the $VerbosePreference to the helper function Invoke-SqlScript so that PRINT statements is outputted correctly when verbose output is requested, e.g Start-DscConfiguration -Verbose.
    • Added en-US localization (issue #624).
    • Added additional unit tests for code coverage.
  • Changes to SqlScriptQuery
    • Correctly passes the $VerbosePreference to the helper function Invoke-SqlScript so that PRINT statements is outputted correctly when verbose output is requested, e.g Start-DscConfiguration -Verbose.
    • Added en-US localization.
    • Added additional unit tests for code coverage.
  • Changes to SqlSetup
    • Concatenated Robocopy localization strings (issue #694).
    • Made the error message more descriptive when the Set-TargetResource function calls the Test-TargetResource function to verify the desired state.
  • Changes to SqlWaitForAG
  • Changes to SqlServerPermission
  • Changes to SqlServerMemory
    • Added en-US localization (issue #617).
    • No longer will the resource set the MinMemory value if it was provided in a configuration that also set the Ensure parameter to 'Absent' (issue #1329).
    • Refactored unit tests to simplify them add add slightly more code coverage.
  • Changes to SqlServerMaxDop
  • Changes to SqlRS
    • Reporting Services are restarted after changing settings, unless $SuppressRestart parameter is set (issue #1331). $SuppressRestart will also prevent Reporting Services restart after initialization.
    • Fixed one of the error handling to use localization, and made the error message more descriptive when the Set-TargetResource function calls the Test-TargetResource function to verify the desired state. This was done prior to adding full en-US localization.
    • Fixed (issue #1258). When initializing Reporting Services, there is no need to execute InitializeReportServer CIM method, since executing SetDatabaseConnection CIM method initializes Reporting Services.
    • issue #864 SqlRs can now initialize SSRS 2017 instances
  • Changes to SqlServerLogin
    • Added en-US localization (issue #615).
    • Added unit tests to improved code coverage.
  • Changes to SqlWindowsFirewall
  • Changes to SqlServerEndpoint
  • Changes to SqlServerEndpointPermission
  • Changes to SqlServerEndpointState
  • Changes to SqlDatabaseRole
  • Changes to SqlDatabaseRecoveryModel
  • Changes to SqlDatabasePermission
  • Changes to SqlDatabaseOwner
  • Changes to SqlDatabase
  • Changes to SqlAGListener
  • Changes to SqlAlwaysOnService
  • Changes to SqlAlias
    • Added en-US localization (issue #602).
    • Removed ShouldProcess for the code, since it has no purpose in a DSC resource (issue #242).
  • Changes to SqlServerReplication
    • Added en-US localization (issue #620).
    • Refactored Get-TargetResource slightly so it provide better verbose messages.

[12.4.0.0] - 2019-04-03

Changed

  • Changes to SqlServerDsc
    • Added new resources.
      • SqlRSSetup
    • Added helper module DscResource.Common from the repository DscResource.Template.
      • Moved all helper functions from SqlServerDscHelper.psm1 to DscResource.Common.
      • Renamed Test-SqlDscParameterState to Test-DscParameterState.
      • New-TerminatingError error text for a missing localized message now matches the output even if the "missing localized message" localized message is also missing.
    • Added helper module DscResource.LocalizationHelper from the repository DscResource.Template, this replaces the helper module CommonResourceHelper.psm1.
    • Cleaned up unit tests, mostly around loading cmdlet stubs and loading classes stubs, but also some tests that were using some odd variants.
    • Fix all integration tests according to issue PowerShell/DscResource.Template#14.
  • Changes to SqlServerMemory
    • Updated Cim Class to Win32_ComputerSystem (instead of Win32_PhysicalMemory) because the correct memory size was not being detected correctly on Azure VMs (issue #914).
  • Changes to SqlSetup
    • Split integration tests into two jobs, one for running integration tests for SQL Server 2016 and another for running integration test for SQL Server 2017 (issue #858).
    • Localized messages for Master Data Services no longer start and end with single quote.
    • When installing features a verbose message is written if a feature is found to already be installed. It no longer quietly removes the feature from the /FEATURES argument.
    • Cleaned up a bit in the tests, removed excessive piping.
    • Fixed minor typo in examples.
    • A new optional parameter FeatureFlag parameter was added to control breaking changes. Functionality added under a feature flag can be toggled on or off, and could be changed later to be the default. This way we can also make more of the new functionalities the default in the same breaking change release (issue #1105).
    • Added a new way of detecting if the shared feature CONN (Client Tools Connectivity, and SQL Client Connectivity SDK), BC (Client Tools Backwards Compatibility), and SDK (Client Tools SDK) is installed or not. The new functionality is used when the parameter FeatureFlag is set to 'DetectionSharedFeatures' (issue #1105).
    • Added a new helper function Get-InstalledSharedFeatures to move out some of the code from the Get-TargetResource to make unit testing easier and faster.
    • Changed the logic of 'Build the argument string to be passed to setup' to not quote the value if root directory is specified (issue #1254).
    • Moved some resource specific helper functions to the new helper module DscResource.Common so they can be shared with the new resource SqlRSSetup.
    • Improved verbose messages in Test-TargetResource function to more clearly tell if features are already installed or not.
    • Refactored unit tests for the functions Test-TargetResource and Set-TargetResource to improve testing speed.
    • Modified the Test-TargetResource and Set-TargetResource to not be case-sensitive when comparing feature names. This was handled correctly in real-world scenarios, but failed when running the unit tests (and testing casing).
  • Changes to SqlAGDatabase
    • Fix MatchDatabaseOwner to check for CONTROL SERVER, IMPERSONATE LOGIN, or CONTROL LOGIN permission in addition to IMPERSONATE ANY LOGIN.
    • Update and fix MatchDatabaseOwner help text.
  • Changes to SqlAG
    • Updated documentation on the behavior of defaults as they only apply when creating a group.
  • Changes to SqlAGReplica
    • AvailabilityMode, BackupPriority, and FailoverMode defaults only apply when creating a replica not when making changes to an existing replica. Explicit parameters will still change existing replicas (issue #1244).
    • ReadOnlyRoutingList now gets updated without throwing an error on the first run (issue #518).
    • Test-Resource fixed to report whether ReadOnlyRoutingList desired state has been reached correctly (issue #1305).
  • Changes to SqlDatabaseDefaultLocation
    • No longer does the Test-TargetResource fail on the second test run when the backup file path was changed, and the path was ending with a backslash (issue #1307).

[12.3.0.0] - 2019-02-20

Changed

  • Changes to SqlServerDsc
    • Reverting the change that was made as part of the issue #1260 in the previous release, as it only mitigated the issue, it did not solve the issue.
    • Removed the container testing since that broke the integration tests, possible due to using excessive amount of memory on the AppVeyor build worker. This will make the unit tests to take a bit longer to run (issue #1260).
    • The unit tests and the integration tests are now run in two separate build workers in AppVeyor. One build worker runs the integration tests, while a second build worker runs the unit tests. The build workers runs in parallel on paid accounts, but sequentially on free accounts (issue #1260).
    • Clean up error handling in some of the integration tests that was part of a workaround for a bug in Pester. The bug is resolved, and the error handling is not again built into Pester.
    • Speeding up the AppVeyor tests by splitting the common tests in a separate build job.
    • Updated the appveyor.yml to have the correct build step, and also correct run the build step only in one of the jobs.
    • Update integration tests to use the new integration test template.
    • Added SqlAgentOperator resource.
  • Changes to SqlServiceAccount
    • Fixed Get-ServiceObject when searching for Integration Services service. Unlike the rest of SQL Server services, the Integration Services service cannot be instanced, however you can have multiple versions installed. Get-Service object would return the correct service name that you are looking for, but it appends the version number at the end. Added parameter VersionNumber so the search would return the correct service name.
    • Added code to allow for using Managed Service Accounts.
    • Now the correct service type string value is returned by the function Get-TargetResource. Previously one value was passed in as a parameter (e.g. DatabaseEngine), but a different string value as returned (e.g. SqlServer). Now Get-TargetResource return the same values that can be passed as values in the parameter ServiceType (issue #981).
  • Changes to SqlServerLogin
    • Fixed issue in Test-TargetResource to valid password on disabled accounts (issue #915).
    • Now when adding a login of type SqlLogin, and the SQL Server login mode is set to 'Integrated', an error is correctly thrown (issue #1179).
  • Changes to SqlSetup
    • Updated the integration test to stop the named instance while installing the other instances to mitigate issue #1260.
    • Add parameters to configure the 'tempdb' files during the installation of the instance. The new parameters are SqlTempdbFileCount, SqlTempdbFileSize, SqlTempdbFileGrowth, SqlTempdbLogFileSize and SqlTempdbLogFileGrowth (issue #1167).
  • Changes to SqlServerEndpoint

[12.2.0.0] - 2019-01-09

Changed

  • Changes to SqlServerDsc
    • During testing in AppVeyor the Build Worker is restarted in the install step to make sure the are no residual changes left from a previous SQL Server install on the Build Worker done by the AppVeyor Team (issue #1260).
    • Code cleanup: Change parameter names of Connect-SQL to align with resources.
    • Updated README.md in the Examples folder.
      • Added a link to the new xADObjectPermissionEntry examples in ActiveDirectory, fixed a broken link and a typo. Adam Rush (@adamrushuk)
  • Change to SqlServerLogin so it doesn't check properties for absent logins.

[12.1.0.0] - 2018-10-24

Changed

  • Changes to SqlServerDsc
    • Add support for validating the code with the DSC ResourceKit Script Analyzer rules, both in Visual Studio Code and directly using Invoke-ScriptAnalyzer.
    • Opt-in for common test "Common Tests - Validate Markdown Links".
    • Updated broken links in \README.md and in \Examples\README.md
    • Opt-in for common test 'Common Tests - Relative Path Length'.
    • Updated the Installation section in the README.md.
    • Updated the Contributing section in the README.md after Style Guideline and Best Practices guidelines has merged into one document.
    • To speed up testing in AppVeyor, unit tests are now run in two containers.
    • Adding the PowerShell script Assert-TestEnvironment.ps1 which must be run prior to running any unit tests locally with Invoke-Pester. Read more in the specific contributing guidelines, under the section Unit Tests.
  • Changes to SqlServerDscHelper
    • Fix style guideline lint errors.
    • Changes to Connect-SQL
      • Adding verbose message in Connect-SQL so it now shows the username that is connecting.
    • Changes to Import-SQLPS
      • Fixed so that when importing SQLPS it imports using the path (and not the .psd1 file).
      • Fixed so that the verbose message correctly shows the name, version and path when importing the module SQLPS (it did show correctly for the SqlServer module).
  • Changes to SqlAg, SqlAGDatabase, and SqlAGReplica examples
    • Included configuration for SqlAlwaysOnService to enable High Availability Disaster Recovery on each node to avoid confusion (issue #1182).
  • Changes to SqlServerDatabaseMail
    • Minor update to Ensure parameter description in the README.md.
  • Changes to Write-ModuleStubFile.ps1
    • Create aliases for cmdlets in the stubbed module which have aliases (issue #1224). Dan Reist (@randomnote1)
    • Use a string builder to build the function stubs.
    • Fixed formatting issues for the function to work with modules other than SqlServer.
  • New DSC resource SqlServerSecureConnection
    • New resource to configure a SQL Server instance for encrypted SQL connections.
  • Changes to SqlAlwaysOnService
    • Updated integration tests to use NetworkingDsc (issue #1129).
  • Changes to SqlServiceAccount
    • Fix unit tests that didn't mock some of the calls. It no longer fail when a SQL Server installation is not present on the node running the unit test (issue #983).

[12.0.0.0] - 2018-09-05

Changed

  • Changes to SqlServerDatabaseMail
    • DisplayName is now properly treated as display name for the originating email address (issue #1200). Nick Reilingh (@NReilingh)
      • DisplayName property now defaults to email address instead of server name.
      • Minor improvements to documentation.
  • Changes to SqlAGDatabase
  • Changes to SqlDatabaseOwner
    • BREAKING CHANGE: Support multiple instances on the same node. The parameter InstanceName is now Key and cannot be omitted (issue #1197).
  • Changes to SqlSetup
    • Added new parameters to allow to define the startup types for the Sql Engine service, the Agent service, the Analysis service and the Integration Service. The new optional parameters are respectively SqlSvcStartupType, AgtSvcStartupType, AsSvcStartupType, IsSvcStartupType and RsSvcStartupType (issue #1165. Maxime Daniou (@mdaniou)

[11.4.0.0] - 2018-07-25

Changed

  • Changes to SqlServerDsc
    • Updated helper function Restart-SqlService to have to new optional parameters SkipClusterCheck and SkipWaitForOnline. This was to support more aspects of the resource SqlServerNetwork.
    • Updated helper function Import-SQLPSModule
      • To only import module if the module does not exist in the session.
      • To always import the latest version of 'SqlServer' or 'SQLPS' module, if more than one version exist on the target node. It will still prefer to use 'SqlServer' module.
    • Updated all the examples and integration tests to not use PSDscAllowPlainTextPassword, so examples using credentials or passwords by default are secure.
  • Changes to SqlAlwaysOnService
    • Integration tests was updated to handle new IPv6 addresses on the AppVeyor build worker (issue #1155).
  • Changes to SqlServerNetwork
    • Refactor SqlServerNetwork to not load assembly from GAC (issue #1151).
    • The resource now supports restarting the SQL Server service when both enabling and disabling the protocol.
    • Added integration tests for this resource (issue #751).
  • Changes to SqlAG
    • Removed excess Import-SQLPSModule call.
  • Changes to SqlSetup
    • Now after a successful install the "SQL PowerShell module" is reevaluated and forced to be reimported into the session. This is to support that a never version of SQL Server was installed side-by-side so that SQLPS module should be used instead.

[11.3.0.0] - 2018-06-13

Changed

  • Changes to SqlServerDsc
    • Moved decoration for integration test to resolve a breaking change in DscResource.Tests.
    • Activated the GitHub App Stale on the GitHub repository.
    • Added a CODE_OF_CONDUCT.md with the same content as in the README.md issue #939.
    • New resources:
    • Fix for issue #779 Paul Kelly (@prkelly)

[11.2.0.0] - 2018-05-02

  • Changes to SqlServerDsc
    • Added new test helper functions in the CommonTestHelpers module. These are used by the integration tests.
      • New-IntegrationLoopbackAdapter: Installs the PowerShell module 'LoopbackAdapter' from PowerShell Gallery and creates a new network loopback adapter.
      • Remove-IntegrationLoopbackAdapter: Removes a new network loopback adapter.
      • Get-NetIPAddressNetwork: Returns the IP network address from an IPv4 address and prefix length.
    • Enabled PSSA rule violations to fail build in the CI environment.
    • Renamed SqlServerDsc.psd1 to be consistent (issue #1116). Glenn Sarti (@glennsarti)
  • Changes to Unit Tests
  • Changes to SqlAlwaysOnService
    • Updated the integration tests to use a loopback adapter to be less intrusive in the build worker environment.
    • Minor code cleanup in integration test, fixed the scope on variable.
  • Changes to SqlSetup
    • Updated the integration tests to stop some services after each integration test. This is to save memory on the AppVeyor build worker.
    • Updated the integration tests to use a SQL Server 2016 Service Pack 1.
    • Fixed Script Analyzer rule error.
  • Changes to SqlRS
    • Updated the integration tests to stop the Reporting Services service after the integration test. This is to save memory on the AppVeyor build worker.
    • The helper function Restart-ReportingServicesService should no longer timeout when restarting the service (issue #1114).
  • Changes to SqlServiceAccount
    • Updated the integration tests to stop some services after each integration test. This is to save memory on the AppVeyor build worker.
  • Changes to SqlServerDatabaseMail
    • Fixed Script Analyzer rule error.

[11.1.0.0] - 2018-03-21

Changed

  • Changes to SqlServerDsc
    • Updated the PULL_REQUEST_TEMPLATE with an improved task list and modified some text to be clearer (issue #973).
    • Updated the ISSUE_TEMPLATE to hopefully be more intuitive and easier to use.
    • Added information to ISSUE_TEMPLATE that issues must be reproducible in SqlServerDsc resource module (if running the older xSQLServer resource module) (issue #1036).
    • Updated ISSUE_TEMPLATE.md with a note about sensitive information (issue #1092).
  • Changes to SqlServerLogin
  • Changes to SqlSetup
    • Michael Fyffe (@TraGicCode): Clarify usage of 'SecurityMode' along with adding parameter validations for the only 2 supported values (issue #1010).
    • Now accounts containing '$' will be able to be used for installing SQL Server. Although, if the account ends with '$' it is considered a Managed Service Account (issue #1055).
  • Changes to Integration Tests
  • Changes to Unit Tests

[11.0.0.0] - 2018-02-07

Changed

  • Changes to SqlServerDsc
    • BREAKING CHANGE: Resource SqlRSSecureConnectionLevel was remove (issue #990). The parameter that was set using that resource has been merged into resource SqlRS as the parameter UseSsl. The UseSsl parameter is of type boolean. This change was made because from SQL Server 2008 R2 this value is made an on/off switch. Read more in the article ConfigurationSetting Method - SetSecureConnectionLevel.
    • Updated so that named parameters are used for New-Object cmdlet. This was done to follow the style guideline.
    • Updated manifest and license to reflect the new year (issue #965).
    • Added a README.md under Tests\Integration to help contributors to write integration tests.
    • Added 'Integration tests' section in the CONTRIBUTING.md.
    • The complete examples were removed. They were no longer accurate and some referenced resources that no longer exist. Accurate examples can be found in each specific resource example folder. Examples for installing Failover Cluster can be found in the resource examples folders in the xFailOverCluster resource module (issue #462).
    • A README.md was created under the Examples folder to be used as reference how to install certain scenarios (issue #462).
    • Removed the local specific common test for compiling examples in this repository and instead opted-in for the common test in the 'DscResource.Tests' repository (issue #669).
    • Added new resource SqlServerDatabaseMail for configuring SQL Server Database Mail (issue #155).
    • Updated the helper function Test-SQLDscParameterState to handle the data type UInt16.
    • Fixed typo in SqlServerDscCommon.Tests.
    • Updated README.md with known issue section for each resource.
    • Resources that did not have a description in the README.md now has one.
    • Resources that missed links to the examples in the README.md now has those links.
    • Style changes in all examples, removing type [System.Management.Automation.Credential()] from credential parameters (issue #1003), and renamed the credential parameter so it is not using abbreviation.
    • Updated the security token for AppVeyor status badge in README.md. When we renamed the repository the security token was changed (issue #1012).
    • Now the helper function Restart-SqlService, after restarting the SQL Server service, does not return until it can connect to the SQL Server instance, and the instance returns status 'Online' (issue #1008). If it fails to connect within the timeout period (defaults to 120 seconds) it throws an error.
    • Fixed typo in comment-base help for helper function Test-AvailabilityReplicaSeedingModeAutomatic.
    • Style cleanup in helper functions and tests.
  • Changes to SqlAG
    • Fixed typos in tests.
    • Style cleanup in code and tests.
  • Changes to SqlAGDatabase
    • Style cleanup in code and tests.
  • Changes to SqlAGListener
    • Fixed typo in comment-based help.
    • Style cleanup in code and tests.
  • Changes to SqlAGReplica
    • Minor code style cleanup. Removed unused variable and instead piped the cmdlet Join-SqlAvailabilityGroup to Out-Null.
    • Fixed minor typos in comment-based help.
    • Fixed minor typos in comment.
    • Style cleanup in code and tests.
    • Updated description for parameter Name in README.md and in comment-based help (issue #1034).
  • Changes to SqlAlias
    • Fixed issue where exception was thrown if reg keys did not exist (issue #949).
    • Style cleanup in tests.
  • Changes to SqlAlwaysOnService
    • Refactor integration tests slightly to improve run time performance (issue #1001).
    • Style cleanup in code and tests.
  • Changes to SqlDatabase
    • Fix minor Script Analyzer warning.
  • Changes to SqlDatabaseDefaultLocation
    • Refactor integration tests slightly to improve run time performance (issue #1001).
    • Minor style cleanup of code in tests.
  • Changes to SqlDatabaseRole
    • Style cleanup in tests.
  • Changes to SqlRS
    • Replaced Get-WmiObject with Get-CimInstance to fix Script Analyzer warnings (issue #264).
    • Refactored the resource to use Invoke-CimMethod.
    • Added parameter UseSsl which when set to $true forces connections to the Reporting Services to use SSL when connecting (issue #990).
    • Added complete example for SqlRS (based on the integration tests) (issue #634).
    • Refactor integration tests slightly to improve run time performance (issue #1001).
    • Style cleanup in code and tests.
  • Changes to SqlScript
    • Style cleanup in tests.
    • Updated examples.
    • Added integration tests.
    • Fixed minor typos in comment-based help.
    • Added new example based on integration test.
  • Changes to SqlServerConfiguration
    • Fixed minor typos in comment-based help.
    • Now the verbose message say what option is changing and to what value (issue #1014).
    • Changed the RestartTimeout parameter from type SInt32 to type UInt32.
    • Added localization (issue #605).
    • Style cleanup in code and tests.
  • Changes to SqlServerEndpoint
    • Updated README.md with links to the examples (issue #504).
    • Style cleanup in tests.
  • Changes to SqlServerLogin
    • Added integration tests (issue #748).
    • Minor code style cleanup.
    • Removed unused variable and instead piped the helper function Connect-SQL to Out-Null.
    • Style cleanup in tests.
  • Changes to SqlServerMaxDop
    • Minor style changes in the helper function Get-SqlDscDynamicMaxDop.
  • Changes to SqlServerMemory
    • Style cleanup in code and tests.
  • Changes to SqlServerPermission
    • Fixed minor typos in comment-based help.
    • Style cleanup in code.
  • Changes to SqlServerReplication
    • Fixed minor typos in verbose messages.
    • Style cleanup in tests.
  • Changes to SqlServerNetwork
    • Added sysadmin account parameter usage to the examples.
  • Changes to SqlServerReplication
  • Changes to SqlServerRole
    • Added localization (issue #621).
    • Added integration tests (issue #756).
    • Updated example to add two server roles in the same configuration.
    • Style cleanup in tests.
  • Changes to SqlServiceAccount
    • Default services are now properly detected (issue #930).
    • Made the description of parameter RestartService more descriptive (issue #960).
    • Added a read-only parameter ServiceAccountName so that the service account name is correctly returned as a string (issue #982).
    • Added integration tests (issue #980).
    • The timing issue that the resource returned before SQL Server service was actually restarted has been solved by a change in the helper function Restart-SqlService (issue #1008). Now Restart-SqlService waits for the instance to return status 'Online' or throws an error saying it failed to connect within the timeout period.
    • Style cleanup in code and tests.
  • Changes to SqlSetup
    • Added parameter ASServerMode to support installing Analysis Services in Multidimensional mode, Tabular mode and PowerPivot mode (issue #388).
    • Added integration tests for testing Analysis Services Multidimensional mode and Tabular mode.
    • Cleaned up integration tests.
    • Added integration tests for installing a default instance of Database Engine.
    • Refactor integration tests slightly to improve run time performance (issue #1001).
    • Added PSSA rule 'PSUseDeclaredVarsMoreThanAssignments' override in the function Set-TargetResource for the variable $global:DSCMachineStatus.
    • Style cleanup in code and tests.
  • Changes to SqlWaitForAG
    • Style cleanup in code.
  • Changes to SqlWindowsFirewall
    • Fixed minor typos in comment-based help.
    • Style cleanup in code.

[10.0.0.0] - 2017-12-14

Changed

  • BREAKING CHANGE: Resource module has been renamed to SqlServerDsc (issue #916).
  • BREAKING CHANGE: Significant rename to reduce length of resource names
    • See issue #851 for a complete table mapping rename changes.
    • Impact to all resources.
  • Changes to CONTRIBUTING.md
    • Added details to the naming convention used in SqlServerDsc.
  • Changes to SqlServerDsc
    • The examples in the root of the Examples folder are obsolete. A note was added to the comment-based help in each example stating it is obsolete. This is a temporary measure until they are replaced (issue #904).
    • Added new common test (regression test) for validating the long path issue for compiling resources in Azure Automation.
    • Fix resources in alphabetical order in README.md (issue #908).
  • Changes to SqlAG
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
    • BREAKING CHANGE: The read-only property SQLServerNetName was removed in favor of EndpointHostName (issue #924). Get-TargetResource will now return the value of property NetName for the property EndpointHostName.
  • Changes to SqlAGDatabase
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
    • Changed the Get-MatchingDatabaseNames function to be case insensitive when matching database names (issue #912).
  • Changes to SqlAGListener
    • BREAKING CHANGE: Parameter NodeName has been renamed to ServerName (issue #308).
  • Changes to SqlAGReplica
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
    • BREAKING CHANGE: Parameters PrimaryReplicaSQLServer and PrimaryReplicaSQLInstanceName has been renamed to PrimaryReplicaServerName and PrimaryReplicaInstanceName respectively (issue #922).
    • BREAKING CHANGE: The read-only property SQLServerNetName was removed in favor of EndpointHostName (issue #924). Get-TargetResource will now return the value of property NetName for the property EndpointHostName.
  • Changes to SqlAlwaysOnService
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlDatabase
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes SqlDatabaseDefaultLocation
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlDatabaseOwner
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlDatabasePermission
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlDatabaseRecoveryModel
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlDatabaseRole
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlRS
    • BREAKING CHANGE: Parameters RSSQLServer and RSSQLInstanceName has been renamed to DatabaseServerName and DatabaseInstanceName respectively (issue #923).
  • Changes to SqlServerConfiguration
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlServerEndpoint
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlServerEndpointPermission
    • BREAKING CHANGE: Parameter NodeName has been renamed to ServerName (issue #308).
    • Now the examples files have a shorter name so that resources will not fail to compile in Azure Automation (issue #934).
  • Changes to SqlServerEndpointState
    • BREAKING CHANGE: Parameter NodeName has been renamed to ServerName (issue #308).
  • Changes to SqlServerLogin
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlServerMaxDop
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlServerMemory
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlServerNetwork
    • BREAKING CHANGE: Parameters SQLServer has been renamed to ServerName (issue #308).
  • Changes to SqlServerPermission
    • BREAKING CHANGE: Parameter NodeName has been renamed to ServerName (issue #308).
  • Changes to SqlServerRole
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).
  • Changes to SqlServerServiceAccount
    • BREAKING CHANGE: Parameters SQLServer and SQLInstanceName has been renamed to ServerName and InstanceName respectively (issue #308).

[9.0.0.0] - 2017-11-15

Changed

  • Changes to xSQLServer
    • Updated Pester syntax to v4
    • Fixes broken links to issues in the CHANGELOG.md.
  • Changes to xSQLServerDatabase
    • Added parameter to specify collation for a database to be different from server collation (issue #767).
    • Fixed unit tests for Get-TargetResource to ensure correctly testing return values (issue #849)
  • Changes to xSQLServerAlwaysOnAvailabilityGroup
    • Refactored the unit tests to allow them to be more user friendly and to test additional SQLServer variations.
      • Each test will utilize the Import-SQLModuleStub to ensure the correct module is loaded (issue #784).
    • Fixed an issue when setting the SQLServer parameter to a Fully Qualified Domain Name (FQDN) (issue #468).
    • Fixed the logic so that if a parameter is not supplied to the resource, the resource will not attempt to apply the defaults on subsequent checks (issue #517).
    • Made the resource cluster aware. When ProcessOnlyOnActiveNode is specified, the resource will only determine if a change is needed if the target node is the active host of the SQL Server instance (issue #868).
  • Changes to xSQLServerAlwaysOnAvailabilityGroupDatabaseMembership
    • Made the resource cluster aware. When ProcessOnlyOnActiveNode is specified, the resource will only determine if a change is needed if the target node is the active host of the SQL Server instance (issue #869).
  • Changes to xSQLServerAlwaysOnAvailabilityGroupReplica
    • Made the resource cluster aware. When ProcessOnlyOnActiveNode is specified, the resource will only determine if a change is needed if the target node is the active host of the SQL Server instance (issue #870).
  • Added the CommonTestHelper.psm1 to store common testing functions.
    • Added the Import-SQLModuleStub function to ensure the correct version of the module stubs are loaded (issue #784).
  • Changes to xSQLServerMemory
    • Made the resource cluster aware. When ProcessOnlyOnActiveNode is specified, the resource will only determine if a change is needed if the target node is the active host of the SQL Server instance (issue #867).
  • Changes to xSQLServerNetwork
    • BREAKING CHANGE: Renamed parameter TcpDynamicPorts to TcpDynamicPort and changed type to Boolean (issue #534).
    • Resolved issue when switching from dynamic to static port. configuration (issue #534).
    • Added localization (en-US) for all strings in resource and unit tests (issue #618).
    • Updated examples to reflect new parameters.
  • Changes to xSQLServerRSConfig
    • Added examples
  • Added resource
  • Changes to xSQLServerEndpointPermission
    • Fixed a problem when running the tests locally in a PowerShell console it would ask for parameters (issue #897).
  • Changes to xSQLServerAvailabilityGroupListener
    • Fixed a problem when running the tests locally in a PowerShell console it would ask for parameters (issue #897).
  • Changes to xSQLServerMaxDop
    • Made the resource cluster aware. When ProcessOnlyOnActiveNode is specified, the resource will only determine if a change is needed if the target node is the active host of the SQL Server instance (issue #882).

[8.2.0.0] - 2017-10-05

Changed

  • Changes to xSQLServer
    • Updated appveyor.yml so that integration tests run in order and so that the SQLPS module folders are renamed to not disturb the units test, but can be renamed back by the integration tests xSQLServerSetup so that the integration tests can run successfully (issue #774).
    • Changed so the maximum version to be installed is 4.0.6.0, when running unit tests in AppVeyor. Quick fix until we can resolve the unit tests (see issue #807).
    • Moved the code block, that contains workarounds in appveyor.yml, so it is run during the install phase instead of the test phase.
    • Fix problem with tests breaking with Pester 4.0.7 (issue #807).
  • Changes to xSQLServerHelper
    • Changes to Connect-SQL and Import-SQLPSModule
      • Now it correctly loads the correct assemblies when SqlServer module is present (issue #649).
      • Now SQLPS module will be correctly loaded (discovered) after installation of SQL Server. Previously resources depending on SQLPS module could fail because SQLPS was not found after installation because the PSModulePath environment variable in the (LCM) PowerShell session did not contain the new module path.
    • Added new helper function "Test-ClusterPermissions" (issue #446).
  • Changes to xSQLServerSetup
    • Fixed an issue with trailing slashes in the 'UpdateSource' property (issue #720).
    • Fixed so that the integration test renames back the SQLPS module folders if they was renamed by AppVeyor (in the appveyor.yml file) (issue #774).
    • Fixed so integration test does not write warnings when SQLPS module is loaded (issue #798).
    • Changes to integration tests.
      • Moved the configuration block from the MSFT_xSQLServerSetup.Integration.Tests.ps1 to the MSFT_xSQLServerSetup.config.ps1 to align with the other integration test. And also get most of the configuration in one place.
      • Changed the tests so that the local SqlInstall account is added as a member of the local administrators group.
      • Changed the tests so that the local SqlInstall account is added as a member of the system administrators in SQL Server (Database Engine) - needed for the xSQLServerAlwaysOnService integration tests.
      • Changed so that only one of the Modules-folder for the SQLPS PowerShell module for SQL Server 2016 is renamed back so it can be used with the integration tests. There was an issue when more than one SQLPS module was present (see more information in issue #806).
      • Fixed wrong variable name for SQL service credential. It was using the integration test variable name instead of the parameter name.
      • Added ErrorAction 'Stop' to the cmdlet Start-DscConfiguration (issue #824).
  • Changes to xSQLServerAlwaysOnAvailabilityGroup
    • Change the check of the values entered as parameter for BasicAvailabilityGroup. It is a boolean, hence it was not possible to disable the feature.
    • Add possibility to enable/disable the feature DatabaseHealthTrigger (SQL Server 2016 or later only).
    • Add possibility to enable the feature DtcSupportEnabled (SQL Server 2016 or later only). The feature currently can't be altered once the Availability Group is created.
    • Use the new helper function "Test-ClusterPermissions".
    • Refactored the unit tests to allow them to be more user friendly.
    • Added the following read-only properties to the schema (issue #476)
      • EndpointPort
      • EndpointURL
      • SQLServerNetName
      • Version
    • Use the Get-PrimaryReplicaServerObject helper function.
  • Changes to xSQLServerAlwaysOnAvailabilityGroupReplica
    • Fixed the formatting for the AvailabilityGroupNotFound error.
    • Added the following read-only properties to the schema (issue #477)
      • EndpointPort
      • EndpointURL
    • Use the new helper function "Test-ClusterPermissions".
    • Use the Get-PrimaryReplicaServerObject helper function
  • Changes to xSQLServerHelper
    • Fixed Connect-SQL by ensuring the Status property returns 'Online' prior to returning the SQL Server object (issue #333).
  • Changes to xSQLServerRole
    • Running Get-DscConfiguration no longer throws an error saying property Members is not an array (issue #790).
  • Changes to xSQLServerMaxDop
    • Fixed error where Measure-Object cmdlet would fail claiming it could not find the specified property (issue #801)
  • Changes to xSQLServerAlwaysOnService
    • Added integration test (issue #736).
      • Added ErrorAction 'Stop' to the cmdlet Start-DscConfiguration (issue #824).
  • Changes to SMO.cs
    • Added default properties to the Server class
      • AvailabilityGroups
      • Databases
      • EndpointCollection
    • Added a new overload to the Login class
    • Added default properties to the AvailabilityReplicas class
      • AvailabilityDatabases
      • AvailabilityReplicas
  • Added new resource xSQLServerAccount (issue #706)
    • Added localization support for all strings
    • Added examples for usage
  • Changes to xSQLServerRSConfig
    • No longer returns a null value from Test-TargetResource when Reporting Services has not been initialized (issue #822).
    • Fixed so that when two Reporting Services are installed for the same major version the resource does not throw an error (issue #819).
    • Now the resource will restart the Reporting Services service after initializing (issue #592). This will enable the Reports site to work.
    • Added integration test (issue #753).
    • Added support for configuring URL reservations and virtual directory names (issue #570)
  • Added resource

[8.1.0.0] - 2017-08-23

Changed

  • Changes to xSQLServer
    • Added back .markdownlint.json so that lint rule MD013 is enforced.
    • Change the module to use the image 'Visual Studio 2017' as the build worker image for AppVeyor (issue #685).
    • Minor style change in CommonResourceHelper. Added missing [Parameter()] on three parameters.
    • Minor style changes to the unit tests for CommonResourceHelper.
    • Changes to xSQLServerHelper
    • Opt-in for module files common tests (issue #702).
      • Removed Byte Order Mark (BOM) from the files; CommonResourceHelper.psm1, MSFT_xSQLServerAvailabilityGroupListener.psm1, MSFT_xSQLServerConfiguration.psm1, MSFT_xSQLServerEndpointPermission.psm1, MSFT_xSQLServerEndpointState.psm1, MSFT_xSQLServerNetwork.psm1, MSFT_xSQLServerPermission.psm1, MSFT_xSQLServerReplication.psm1, MSFT_xSQLServerScript.psm1, SQLPSStub.psm1, SqlServerStub.psm1.
    • Opt-in for script files common tests (issue #707).
      • Removed Byte Order Mark (BOM) from the files; DSCClusterSqlBuild.ps1, DSCFCISqlBuild.ps1, DSCSqlBuild.ps1, DSCSQLBuildEncrypted.ps1, SQLPush_SingleServer.ps1, 1-AddAvailabilityGroupListenerWithSameNameAsVCO.ps1, 2-AddAvailabilityGroupListenerWithDifferentNameAsVCO.ps1, 3-RemoveAvailabilityGroupListenerWithSameNameAsVCO.ps1, 4-RemoveAvailabilityGroupListenerWithDifferentNameAsVCO.ps1, 5-AddAvailabilityGroupListenerUsingDHCPWithDefaultServerSubnet.ps1, 6-AddAvailabilityGroupListenerUsingDHCPWithSpecificSubnet.ps1, 2-ConfigureInstanceToEnablePriorityBoost.ps1, 1-CreateEndpointWithDefaultValues.ps1, 2-CreateEndpointWithSpecificPortAndIPAddress.ps1, 3-RemoveEndpoint.ps1, 1-AddConnectPermission.ps1, 2-RemoveConnectPermission.ps1, 3-AddConnectPermissionToAlwaysOnPrimaryAndSecondaryReplicaEachWithDifferentSqlServiceAccounts.ps1, 4-RemoveConnectPermissionToAlwaysOnPrimaryAndSecondaryReplicaEachWithDifferentSqlServiceAccounts.ps1, 1-MakeSureEndpointIsStarted.ps1, 2-MakeSureEndpointIsStopped.ps1, 1-EnableTcpIpWithStaticPort.ps1, 2-EnableTcpIpWithDynamicPort.ps1, 1-AddServerPermissionForLogin.ps1, 2-RemoveServerPermissionForLogin.ps1, 1-ConfigureInstanceAsDistributor.ps1, 2-ConfigureInstanceAsPublisher.ps1, 1-WaitForASingleClusterGroup.ps1, 2-WaitForMultipleClusterGroups.ps1.
    • Updated year to 2017 in license file (issue #711).
    • Code style clean-up throughout the module to align against the Style Guideline.
    • Fixed typos and the use of wrong parameters in unit tests which was found after release of new version of Pester (issue #773).
  • Changes to xSQLServerAlwaysOnService
    • Added resource description in README.md.
    • Updated parameters descriptions in comment-based help, schema.mof and README.md.
    • Changed the datatype of the parameter to UInt32 so the same datatype is used in both the Get-/Test-/Set-TargetResource functions as in the schema.mof (issue #688).
    • Added read-only property IsHadrEnabled to schema.mof and the README.md (issue #687).
    • Minor cleanup of code.
    • Added examples (issue #633)
      • 1-EnableAlwaysOn.ps1
      • 2-DisableAlwaysOn.ps1
    • Fixed PS Script Analyzer errors (issue #724)
    • Casting the result of the property IsHadrEnabled to [System.Boolean] so that $null is never returned, which resulted in an exception (issue #763).
  • Changes to xSQLServerDatabasePermission
  • Changes to xSQLServerScript
  • Changes to xSQLServerSetup
    • Added Swedish localization (issue #695).
    • Now Get-TargetResource correctly returns an array for property ASSysAdminAccounts, and no longer throws an error when there is just one Analysis Services administrator (issue #691).
    • Added a simple integration test (issue #709).
    • Fixed PS Script Analyzer errors (issue #729)

[8.0.0.0] - 2017-07-12

Changed

  • BREAKING CHANGE: The module now requires WMF 5.
    • This is required for class-based resources
  • Added new resource
    • xSQLServerAlwaysOnAvailabilityGroupDatabaseMembership
    • Added localization support for all strings.
    • Refactored as a MOF based resource due to challenges with Pester and testing in Powershell 5.
  • Changes to xSQLServer
    • BREAKING CHANGE: xSQLServer does no longer try to support WMF 4.0 (PowerShell 4.0) (issue #574). Minimum supported version of WMF is now 5.0 (PowerShell 5.0).
    • BREAKING CHANGE: Removed deprecated resource xSQLAOGroupJoin (issue #457).
    • BREAKING CHANGE: Removed deprecated resource xSQLAOGroupEnsure (issue #456).
    • BREAKING CHANGE: Removed deprecated resource xSQLServerFailoverClusterSetup (issue #336).
    • Updated PULL_REQUEST_TEMPLATE adding comment block around text. Also rearranged and updated texts (issue #572).
    • Added common helper functions for HQRM localization, and added tests for the helper functions.
      • Get-LocalizedData
      • New-InvalidResultException
      • New-ObjectNotFoundException
      • New-InvalidOperationException
      • New-InvalidArgumentException
    • Updated CONTRIBUTING.md describing the new localization helper functions.
    • Fixed typos in xSQLServer.strings.psd1
    • Fixed CodeCov badge links in README.md so that they point to the correct branch.
    • Added VS Code workspace settings file with formatting settings matching the Style Guideline (issue #645). That will make it possible inside VS Code to press SHIFT+ALT+F, or press F1 and choose 'Format document' in the list. The PowerShell code will then be formatted according to the Style Guideline (although maybe not complete, but would help a long way).
      • Removed powershell.codeFormatting.alignPropertyValuePairs setting since it does not align with the style guideline.
      • Added powershell.codeFormatting.preset with a value of 'Custom' so that workspace formatting settings are honored (issue #665).
    • Fixed lint error MD013 and MD036 in README.md.
    • Updated .markdownlint.json to enable rule MD013 and MD036 to enforce those lint markdown rules in the common tests.
    • Fixed lint error MD013 in CHANGELOG.md.
    • Fixed lint error MD013 in CONTRIBUTING.md.
    • Added code block around types in README.md.
    • Updated copyright information in xSQLServer.psd1.
    • Opt-in for markdown common tests (issue #668).
      • The old markdown tests has been removed.
  • Changes to xSQLServerHelper
    • Removed helper function Grant-ServerPerms because the deprecated resource that was using it was removed.
    • Removed helper function Grant-CNOPerms because the deprecated resource that was using it was removed.
    • Removed helper function New-ListenerADObject because the deprecated resource that was using it was removed.
    • Added tests for those helper functions that did not have tests.
    • Test-SQLDscParameterState helper function can now correctly pass a CimInstance as DesiredValue.
    • Test-SQLDscParameterState helper function will now output a warning message if the value type of a desired value is not supported.
    • Added localization to helper functions (issue #641).
      • Resolved the issue when using Write-Verbose in helper functions discussed in #641 where Write-Verbose wouldn't write out verbose messages unless using parameter Verbose.
      • Moved localization strings from xSQLServer.strings.psd1 to xSQLServerHelper.strings.psd1.
  • Changes to xSQLServerSetup
    • BREAKING CHANGE: Replaced StartWin32Process helper function with the cmdlet Start-Process (issue #41, #93 and #126).
    • BREAKING CHANGE: The parameter SetupCredential has been removed since it is no longer needed. This is because the resource now support the built-in PsDscRunAsCredential.
    • BREAKING CHANGE: Now the resource supports using built-in PsDscRunAsCredential. If PsDscRunAsCredential is set, that username will be used as the first system administrator.
    • BREAKING CHANGE: If the parameter PsDscRunAsCredential are not assigned any credentials then the resource will start the setup process as the SYSTEM account. When installing as the SYSTEM account, then parameter SQLSysAdminAccounts and ASSysAdminAccounts must be specified when installing feature Database Engine and Analysis Services respectively.
    • When setup exits with the exit code 3010 a warning message is written to console telling that setup finished successfully, but a reboot is required (partly fixes issue #565).
    • When setup exits with an exit code other than 0 or 3010 a warning message is written to console telling that setup finished with an error (partly fixes issue #580).
    • Added a new parameter SetupProcessTimeout which defaults to 7200 seconds (2 hours). If the setup process has not finished before the timeout value in SetupProcessTimeout an error will be thrown (issue #566).
    • Updated all examples to match the removal of SetupCredential.
    • Updated (removed) severe known issues in README.md for resource xSQLServerSetup.
    • Now all major version uses the same identifier to evaluate InstallSharedDir and InstallSharedWOWDir (issue #420).
    • Now setup arguments that contain no value will be ignored, for example when InstallSharedDir and InstallSharedWOWDir path is already present on the target node, because of a previous installation (issue #639).
    • Updated Get-TargetResource to correctly detect BOL, Conn, BC and other tools when they are installed without SQLENGINE (issue #591).
    • Now it can detect Documentation Components correctly after the change in issue #591 (issue #628)
    • Fixed bug that prevented Get-DscConfiguration from running without error. The return hash table fails if the $clusteredSqlIpAddress variable is not used. The schema expects a string array but it is initialized as just a null string, causing it to fail on Get-DscConfiguration (issue #393).
    • Added localization support for all strings.
    • Added a test to test some error handling for cluster installations.
    • Added support for MDS feature install (issue #486)
      • Fixed localization support for MDS feature (issue #671).
  • Changes to xSQLServerRSConfig
    • BREAKING CHANGE: Removed $SQLAdminCredential parameter. Use common parameter PsDscRunAsCredential (WMF 5.0+) to run the resource under different credentials. PsDscRunAsCredential Windows account must be a sysadmin on SQL Server (issue #568).
    • In addition, the resource no longer uses Invoke-Command cmdlet that was used to impersonate the Windows user specified by $SQLAdminCredential. The call also needed CredSSP authentication to be enabled and configured on the target node, which complicated deployments in non-domain scenarios. Using PsDscRunAsCredential solves this problems for us.
    • Fixed virtual directory creation for SQL Server 2016 (issue #569).
    • Added unit tests (issue #295).
  • Changes to xSQLServerDatabase
    • Changed the readme, SQLInstance should have been SQLInstanceName.
  • Changes to xSQLServerScript
    • Fixed bug with schema and variable mismatch for the Credential/Username parameter in the return statement (issue #661).
    • Optional QueryTimeout parameter to specify sql script query execution timeout. Fixes issue #597
  • Changes to xSQLServerAlwaysOnService
    • Fixed typos in localization strings and in tests.
  • Changes to xSQLServerAlwaysOnAvailabilityGroup
    • Now it utilize the value of 'FailoverMode' to set the 'FailoverMode' property of the Availability Group instead of wrongly using the 'AvailabilityMode' property of the Availability Group.

[7.1.0.0] - 2017-05-31

Changed

  • Changes to xSQLServerMemory
    • Changed the way SQLServer parameter is passed from Test-TargetResource to Get-TargetResource so that the default value isn't lost (issue #576).
    • Added condition to unit tests for when no SQLServer parameter is set.
  • Changes to xSQLServerMaxDop
    • Changed the way SQLServer parameter is passed from Test-TargetResource to Get-TargetResource so that the default value isn't lost (issue #576).
    • Added condition to unit tests for when no SQLServer parameter is set.
  • Changes to xWaitForAvailabilityGroup
    • Updated README.md with a description for the resources and revised the parameter descriptions.
    • The default value for RetryIntervalSec is now 20 seconds and the default value for RetryCount is now 30 times (issue #505).
    • Cleaned up code and fixed PSSA rules warnings (issue #268).
    • Added unit tests (issue #297).
    • Added descriptive text to README.md that the account that runs the resource must have permission to run the cmdlet Get-ClusterGroup (issue #307).
    • Added read-only parameter GroupExist which will return $true if the cluster role/group exist, otherwise it returns $false (issue #510).
    • Added examples.
  • Changes to xSQLServerPermission
    • Cleaned up code, removed SupportsShouldProcess and fixed PSSA rules warnings (issue #241 and issue #262).
    • It is now possible to add permissions to two or more logins on the same instance (issue #526).
    • The parameter NodeName is no longer mandatory and has now the default value of $env:COMPUTERNAME.
    • The parameter Ensure now has a default value of 'Present'.
    • Updated README.md with a description for the resources and revised the parameter descriptions.
    • Removed dependency of SQLPS provider (issue #482).
    • Added ConnectSql permission. Now that permission can also be granted or revoked.
    • Updated note in resource description to also mention ConnectSql permission.
  • Changes to xSQLServerHelper module
    • Removed helper function Get-SQLPSInstance and Get-SQLPSInstanceName because there is no resource using it any longer.
    • Added four new helper functions.
      • Register-SqlSmo, Register-SqlWmiManagement and Unregister-SqlAssemblies to handle the creation on the application domain and loading and unloading of the SMO and SqlWmiManagement assemblies.
      • Get-SqlInstanceMajorVersion to get the major SQL version for a specific instance.
    • Fixed typos in comment-based help
  • Changes to xSQLServer
    • Fixed typos in markdown files; CHANGELOG, CONTRIBUTING, README and ISSUE_TEMPLATE.
    • Fixed typos in schema.mof files (and README.md).
    • Updated some parameter description in schema.mof files on those that was found was not equal to README.md.
  • Changes to xSQLServerAlwaysOnService
    • Get-TargetResource should no longer fail silently with error 'Index operation failed; the array index evaluated to null.' (issue #519). Now if the Server.IsHadrEnabled property return neither $true or $false the Get-TargetResource function will throw an error.
  • Changes to xSQLServerSetUp
    • Updated xSQLServerSetup Module Get-Resource method to fix (issue #516 and #490).
    • Added change to detect DQ, DQC, BOL, SDK features. Now the function Test-TargetResource returns true after calling set for DQ, DQC, BOL, SDK features (issue #516 and #490).
  • Changes to xSQLServerAlwaysOnAvailabilityGroup
    • Updated to return the exception raised when an error is thrown.
  • Changes to xSQLServerAlwaysOnAvailabilityGroupReplica
    • Updated to return the exception raised when an error is thrown.
    • Updated parameter description for parameter Name, so that it says it must be in the format SQLServer\InstanceName for named instance (issue #548).
  • Changes to xSQLServerLogin
    • Added an optional boolean parameter Disabled. It can be used to enable/disable existing logins or create disabled logins (new logins are created as enabled by default).
  • Changes to xSQLServerDatabaseRole
    • Updated variable passed to Microsoft.SqlServer.Management.Smo.User constructor to fix issue #530
  • Changes to xSQLServerNetwork
    • Added optional parameter SQLServer with default value of $env:COMPUTERNAME (issue #528).
    • Added optional parameter RestartTimeout with default value of 120 seconds.
    • Now the resource supports restarting a sql server in a cluster (issue #527 and issue #455).
    • Now the resource allows to set the parameter TcpDynamicPorts to a blank value (partly fixes issue #534). Setting a blank value for parameter TcpDynamicPorts together with a value for parameter TcpPort means that static port will be used.
    • Now the resource will not call Alter() in the Set-TargetResource when there is no change necessary (issue #537).
    • Updated example 1-EnableTcpIpOnCustomStaticPort.
    • Added unit tests (issue #294).
    • Refactored some of the code, cleaned up the rest and fixed PSSA rules warnings (issue #261).
    • If parameter TcpDynamicPort is set to '0' at the same time as TcpPort is set the resource will now throw an error (issue #535).
    • Added examples (issue #536).
    • When TcpDynamicPorts is set to '0' the Test-TargetResource function will no longer fail each time (issue #564).
  • Changes to xSQLServerRSConfig
    • Replaced sqlcmd.exe usages with Invoke-SqlCmd calls (issue #567).
  • Changes to xSQLServerDatabasePermission
    • Fixed code style, updated README.md and removed *-SqlDatabasePermission functions from xSQLServerHelper.psm1.
    • Added the option 'GrantWithGrant' with gives the user grant rights, together with the ability to grant others the same right.
    • Now the resource can revoke permission correctly (issue #454). When revoking 'GrantWithGrant', both the grantee and all the other users the grantee has granted the same permission to, will also get their permission revoked.
    • Updated tests to cover Revoke().
  • Changes to xSQLServerHelper
    • The missing helper function ('Test-SPDSCObjectHasProperty'), that was referenced in the helper function Test-SQLDscParameterState, is now incorporated into Test-SQLDscParameterState (issue #589).

[7.0.0.0] - 2017-04-19

Changed

  • Examples
    • xSQLServerDatabaseRole
      • 1-AddDatabaseRole.ps1
      • 2-RemoveDatabaseRole.ps1
    • xSQLServerRole
      • 3-AddMembersToServerRole.ps1
      • 4-MembersToIncludeInServerRole.ps1
      • 5-MembersToExcludeInServerRole.ps1
    • xSQLServerSetup
      • 1-InstallDefaultInstanceSingleServer.ps1
      • 2-InstallNamedInstanceSingleServer.ps1
      • 3-InstallNamedInstanceSingleServerFromUncPathUsingSourceCredential.ps1
      • 4-InstallNamedInstanceInFailoverClusterFirstNode.ps1
      • 5-InstallNamedInstanceInFailoverClusterSecondNode.ps1
    • xSQLServerReplication
      • 1-ConfigureInstanceAsDistributor.ps1
      • 2-ConfigureInstanceAsPublisher.ps1
    • xSQLServerNetwork
      • 1-EnableTcpIpOnCustomStaticPort.ps1
    • xSQLServerAvailabilityGroupListener
      • 1-AddAvailabilityGroupListenerWithSameNameAsVCO.ps1
      • 2-AddAvailabilityGroupListenerWithDifferentNameAsVCO.ps1
      • 3-RemoveAvailabilityGroupListenerWithSameNameAsVCO.ps1
      • 4-RemoveAvailabilityGroupListenerWithDifferentNameAsVCO.ps1
      • 5-AddAvailabilityGroupListenerUsingDHCPWithDefaultServerSubnet.ps1
      • 6-AddAvailabilityGroupListenerUsingDHCPWithSpecificSubnet.ps1
    • xSQLServerEndpointPermission
      • 1-AddConnectPermission.ps1
      • 2-RemoveConnectPermission.ps1
      • 3-AddConnectPermissionToAlwaysOnPrimaryAndSecondaryReplicaEachWithDifferentSqlServiceAccounts.ps1
      • 4-RemoveConnectPermissionToAlwaysOnPrimaryAndSecondaryReplicaEachWithDifferentSqlServiceAccounts.ps1
    • xSQLServerPermission
      • 1-AddServerPermissionForLogin.ps1
      • 2-RemoveServerPermissionForLogin.ps1
    • xSQLServerEndpointState
      • 1-MakeSureEndpointIsStarted.ps1
      • 2-MakeSureEndpointIsStopped.ps1
    • xSQLServerConfiguration
      • 1-ConfigureTwoInstancesOnTheSameServerToEnableClr.ps1
      • 2-ConfigureInstanceToEnablePriorityBoost.ps1
    • xSQLServerEndpoint
      • 1-CreateEndpointWithDefaultValues.ps1
      • 2-CreateEndpointWithSpecificPortAndIPAddress.ps1
      • 3-RemoveEndpoint.ps1
  • Changes to xSQLServerDatabaseRole
    • Fixed code style, added updated parameter descriptions to schema.mof and README.md.
  • Changes to xSQLServer
    • Raised the CodeCov target to 70% which is the minimum and required target for HQRM resource.
  • Changes to xSQLServerRole
    • BREAKING CHANGE: The resource has been reworked in it's entirely. Below is what has changed.
      • The mandatory parameters now also include ServerRoleName.
      • The ServerRole parameter was before an array of server roles, now this parameter is renamed to ServerRoleName and can only be set to one server role.
        • ServerRoleName are no longer limited to built-in server roles. To add members to a built-in server role, set ServerRoleName to the name of the built-in server role.
        • The ServerRoleName will be created when Ensure is set to 'Present' (if it does not already exist), or removed if Ensure is set to 'Absent'.
      • Three new parameters are added; Members, MembersToInclude and MembersToExclude.
        • Members can be set to one or more logins, and those will replace all the memberships in the server role.
        • MembersToInclude and MembersToExclude can be set to one or more logins that will add or remove memberships, respectively, in the server role. MembersToInclude and MembersToExclude can not be used at the same time as parameter Members. But both MembersToInclude and MembersToExclude can be used together at the same time.
  • Changes to xSQLServerSetup
    • Added a note to the README.md saying that it is not possible to add or remove features from a SQL Server failover cluster (issue #433).
    • Changed so that it reports false if the desired state is not correct (issue #432).
      • Added a test to make sure we always return false if a SQL Server failover cluster is missing features.
    • Helper function Connect-SQLAnalysis
      • Now has correct error handling, and throw does not used the unknown named parameter '-Message' (issue #436)
      • Added tests for Connect-SQLAnalysis
      • Changed to localized error messages.
      • Minor changes to error handling.
    • This adds better support for Addnode (issue #369).
    • Now it skips cluster validation för add node (issue #442).
    • Now it ignores parameters that are not allowed for action Addnode (issue #441).
    • Added support for vNext CTP 1.4 (issue #472).
  • Added new resource
    • xSQLServerAlwaysOnAvailabilityGroupReplica
  • Changes to xSQLServerDatabaseRecoveryModel
    • Fixed code style, removed SQLServerDatabaseRecoveryModel functions from xSQLServerHelper.
  • Changes to xSQLServerAlwaysOnAvailabilityGroup
    • Fixed the permissions check loop so that it exits the loop after the function determines the required permissions are in place.
  • Changes to xSQLServerAvailabilityGroupListener
    • Removed the dependency of SQLPS provider (issue #460).
    • Cleaned up code.
    • Added test for more coverage.
    • Fixed PSSA rule warnings (issue #255).
    • Parameter Ensure now defaults to 'Present' (issue #450).
  • Changes to xSQLServerFirewall
    • Now it will correctly create rules when the resource is used for two or more instances on the same server (issue #461).
  • Changes to xSQLServerEndpointPermission
    • Added description to the README.md
    • Cleaned up code (issue #257 and issue #231)
    • Now the default value for Ensure is 'Present'.
    • Removed dependency of SQLPS provider (issue #483).
    • Refactored tests so they use less code.
  • Changes to README.md
    • Adding deprecated tag to xSQLServerFailoverClusterSetup, xSQLAOGroupEnsure and xSQLAOGroupJoin in README.md so it it more clear that these resources has been replaced by xSQLServerSetup, xSQLServerAlwaysOnAvailabilityGroup and xSQLServerAlwaysOnAvailabilityGroupReplica respectively.
  • Changes to xSQLServerEndpoint
    • BREAKING CHANGE: Now SQLInstanceName is mandatory, and is a key, so SQLInstanceName has no longer a default value (issue #279).
    • BREAKING CHANGE: Parameter AuthorizedUser has been removed (issue #466, issue #275 and issue #80). Connect permissions can be set using the resource xSQLServerEndpointPermission.
    • Optional parameter IpAddress has been added. Default is to listen on any valid IP-address. (issue #232)
    • Parameter Port now has a default value of 5022.
    • Parameter Ensure now defaults to 'Present'.
    • Resource now supports changing IP address and changing port.
    • Added unit tests (issue #289)
    • Added examples.
  • Changes to xSQLServerEndpointState
    • Cleaned up code, removed SupportsShouldProcess and fixed PSSA rules warnings (issue #258 and issue #230).
    • Now the default value for the parameter State is 'Started'.
    • Updated README.md with a description for the resources and revised the parameter descriptions.
    • Removed dependency of SQLPS provider (issue #481).
    • The parameter NodeName is no longer mandatory and has now the default value of $env:COMPUTERNAME.
    • The parameter Name is now a key so it is now possible to change the state on more than one endpoint on the same instance. Note: The resource still only supports Database Mirror endpoints at this time.
  • Changes to xSQLServerHelper module
    • Removing helper function Get-SQLAlwaysOnEndpoint because there is no resource using it any longer.
    • BREAKING CHANGE: Changed helper function Import-SQLPSModule to support SqlServer module (issue #91). The SqlServer module is the preferred module so if it is found it will be used, and if not found an attempt will be done to load SQLPS module instead.
  • Changes to xSQLServerScript
    • Updated tests for this resource, because they failed when Import-SQLPSModule was updated.

[6.0.0.0] - 2017-03-08

Changed

  • Changes to xSQLServerConfiguration
    • BREAKING CHANGE: The parameter SQLInstanceName is now mandatory.
    • Resource can now be used to define the configuration of two or more different DB instances on the same server.
  • Changes to xSQLServerRole
    • xSQLServerRole now correctly reports that the desired state is present when the login is already a member of the server roles.
  • Added new resources
    • xSQLServerAlwaysOnAvailabilityGroup
  • Changes to xSQLServerSetup
    • Properly checks for use of SQLSysAdminAccounts parameter in $PSBoundParameters. The test now also properly evaluates the setup argument for SQLSysAdminAccounts.
    • xSQLServerSetup should now function correctly for the InstallFailoverCluster action, and also supports cluster shared volumes. Note that the AddNode action is not currently working.
    • It now detects that feature Client Connectivity Tools (CONN) and Client Connectivity Backwards Compatibility Tools (BC) is installed.
    • Now it can correctly determine the right cluster when only parameter InstallSQLDataDir is assigned a path (issue #401).
    • Now the only mandatory path parameter is InstallSQLDataDir when installing Database Engine (issue #400).
    • It now can handle mandatory parameters, and are not using wildcard to find the variables containing paths (issue #394).
    • Changed so that instead of connection to localhost it is using $env:COMPUTERNAME as the host name to which it connects. And for cluster installation it uses the parameter FailoverClusterNetworkName as the host name to which it connects (issue #407).
    • When called with Action = 'PrepareFailoverCluster', the SQLSysAdminAccounts and FailoverClusterGroup parameters are no longer passed to the setup process (issues #410 and 411).
    • Solved the problem that InstanceDir and InstallSQLDataDir could not be set to just a qualifier, i.e 'E:' (issue #418). All paths (except SourcePath) can now be set to just the qualifier.
  • Enables CodeCov.io code coverage reporting.
  • Added badge for CodeCov.io to README.md.
  • Examples
    • xSQLServerMaxDop
      • 1-SetMaxDopToOne.ps1
      • 2-SetMaxDopToAuto.ps1
      • 3-SetMaxDopToDefault.ps1
    • xSQLServerMemory
      • 1-SetMaxMemoryTo12GB.ps1
      • 2-SetMaxMemoryToAuto.ps1
      • 3-SetMinMaxMemoryToAuto.ps1
      • 4-SetMaxMemoryToDefault.ps1
    • xSQLServerDatabase
      • 1-CreateDatabase.ps1
      • 2-DeleteDatabase.ps1
  • Added tests for resources
    • xSQLServerMaxDop
    • xSQLServerMemory
  • Changes to xSQLServerMemory
    • BREAKING CHANGE: The mandatory parameter now include SQLInstanceName. The DynamicAlloc parameter is no longer mandatory
  • Changes to xSQLServerDatabase
    • When the system is not in desired state the Test-TargetResource will now output verbose messages saying so.
  • Changes to xSQLServerDatabaseOwner
    • Fixed code style, added updated parameter descriptions to schema.mof and README.md.

[5.0.0.0] - 2017-01-25

Changed

  • Improvements how tests are initiated in AppVeyor
    • Removed previous workaround (issue #201) from unit tests.
    • Changes in appveyor.yml so that SQL modules are removed before common test is run.
    • Now the deploy step are no longer failing when merging code into Dev. Neither is the deploy step failing if a contributor had AppVeyor connected to the fork of xSQLServer and pushing code to the fork.
  • Changes to README.md
    • Changed the contributing section to help new contributors.
    • Added links for each resource so it is easier to navigate to the parameter list for each resource.
    • Moved the list of resources in alphabetical order.
    • Moved each resource parameter list into alphabetical order.
    • Removed old text mentioning System Center.
    • Now the correct product name is written in the installation section, and a typo was also fixed.
    • Fixed a typo in the Requirements section.
    • Added link to Examples folder in the Examples section.
    • Change the layout of the README.md to closer match the one of PSDscResources
    • Added more detailed text explaining what operating systems WMF5.0 can be installed on.
    • Verified all resource schema files with the README.md and fixed some errors (descriptions was not verified).
    • Added security requirements section for resource xSQLServerEndpoint and xSQLAOGroupEnsure.
  • Changes to xSQLServerSetup
    • The resource no longer uses Win32_Product WMI class when evaluating if SQL Server Management Studio is installed. See article kb974524 for more information.
    • Now it uses CIM cmdlets to get information from WMI classes.
    • Resolved all of the PSScriptAnalyzer warnings that was triggered in the common tests.
    • Improvement for service accounts to enable support for Managed Service Accounts as well as other nt authority accounts
    • Changes to the helper function Copy-ItemWithRoboCopy
      • Robocopy is now started using Start-Process and the error handling has been improved.
      • Robocopy now removes files at the destination path if they no longer exists at the source.
      • Robocopy copies using unbuffered I/O when available (recommended for large files).
    • Added a more descriptive text for the parameter SourceCredential to further explain how the parameter work.
    • BREAKING CHANGE: Removed parameter SourceFolder.
    • BREAKING CHANGE: Removed default value "$PSScriptRoot...." from parameter SourcePath.
    • Old code, that no longer filled any function, has been replaced.
      • Function ResolvePath has been replaced with [Environment]::ExpandEnvironmentVariables($SourcePath) so that environment variables still can be used in Source Path.
      • Function NetUse has been replaced with New-SmbMapping and Remove-SmbMapping.
    • Renamed function GetSQLVersion to Get-SqlMajorVersion.
    • BREAKING CHANGE: Renamed parameter PID to ProductKey to avoid collision with automatic variable $PID
  • Changes to xSQLServerScript
    • All credential parameters now also has the type [System.Management.Automation.Credential()] to better work with PowerShell 4.0.
    • It is now possible to configure two instances on the same node, with the same script.
    • Added to the description text for the parameter Credential describing how to authenticate using Windows Authentication.
    • Added examples to show how to authenticate using either SQL or Windows authentication.
    • A recent issue showed that there is a known problem running this resource using PowerShell 4.0. For more information, see issue #273
  • Changes to xSQLServerFirewall
    • BREAKING CHANGE: Removed parameter SourceFolder.
    • BREAKING CHANGE: Removed default value "$PSScriptRoot...." from parameter SourcePath.
    • Old code, that no longer filled any function, has been replaced.
      • Function ResolvePath has been replaced with [Environment]::ExpandEnvironmentVariables($SourcePath) so that environment variables still can be used in Source Path.
    • Adding new optional parameter SourceCredential that can be used to authenticate against SourcePath.
    • Solved PSSA rules errors in the code.
    • Get-TargetResource no longer return $true when no products was installed.
  • Changes to the unit test for resource
    • xSQLServerSetup
      • Added test coverage for helper function Copy-ItemWithRoboCopy
  • Changes to xSQLServerLogin
    • Removed ShouldProcess statements
    • Added the ability to enforce password policies on SQL logins
  • Added common test (xSQLServerCommon.Tests) for xSQLServer module
    • Now all markdown files will be style checked when tests are running in AppVeyor after sending in a pull request.
    • Now all Examples will be tested by compiling to a .mof file after sending in a pull request.
  • Changes to xSQLServerDatabaseOwner
    • The example 'SetDatabaseOwner' can now compile, it wrongly had a DependsOn in the example.
  • Changes to SQLServerRole
    • The examples 'AddServerRole' and 'RemoveServerRole' can now compile, it wrongly had a DependsOn in the example.
  • Changes to CONTRIBUTING.md
    • Added section 'Tests for examples files'
    • Added section 'Tests for style check of Markdown files'
    • Added section 'Documentation with Markdown'
    • Added texts to section 'Tests'
  • Changes to xSQLServerHelper
    • added functions
      • Get-SqlDatabaseRecoveryModel
      • Set-SqlDatabaseRecoveryModel
  • Examples
    • xSQLServerDatabaseRecoveryModel
      • 1-SetDatabaseRecoveryModel.ps1
    • xSQLServerDatabasePermission
      • 1-GrantDatabasePermissions.ps1
      • 2-RevokeDatabasePermissions.ps1
      • 3-DenyDatabasePermissions.ps1
    • xSQLServerFirewall
      • 1-CreateInboundFirewallRules
      • 2-RemoveInboundFirewallRules
  • Added tests for resources
    • xSQLServerDatabaseRecoveryModel
    • xSQLServerDatabasePermissions
    • xSQLServerFirewall
  • Changes to xSQLServerDatabaseRecoveryModel
    • BREAKING CHANGE: Renamed xSQLDatabaseRecoveryModel to xSQLServerDatabaseRecoveryModel to align with naming convention.
    • BREAKING CHANGE: The mandatory parameters now include SQLServer, and SQLInstanceName.
  • Changes to xSQLServerDatabasePermission
    • BREAKING CHANGE: Renamed xSQLServerDatabasePermissions to xSQLServerDatabasePermission to align with naming convention.
    • BREAKING CHANGE: The mandatory parameters now include PermissionState, SQLServer, and SQLInstanceName.
  • Added support for clustered installations to xSQLServerSetup
    • Migrated relevant code from xSQLServerFailoverClusterSetup
    • Removed Get-WmiObject usage
    • Clustered storage mapping now supports asymmetric cluster storage
    • Added support for multi-subnet clusters
    • Added localized error messages for cluster object mapping
    • Updated README.md to reflect new parameters
  • Updated description for xSQLServerFailoverClusterSetup to indicate it is deprecated.
  • xPDT helper module
    • Function GetxPDTVariable was removed since it no longer was used by any resources.
    • File xPDT.xml was removed since it was not used by any resources, and did not provide any value to the module.
  • Changes xSQLServerHelper module
    • Removed the globally defined $VerbosePreference = 'Continue' from xSQLServerHelper.
    • Fixed a typo in a variable name in the function New-ListenerADObject.
    • Now Restart-SqlService will correctly show the services it restarts. Also fixed PSSA warnings.

[4.0.0.0] - 2016-12-14

Changed

  • Fixes in xSQLServerConfiguration
    • Added support for clustered SQL instances.
    • BREAKING CHANGE: Updated parameters to align with other resources (SQLServer / SQLInstanceName).
    • Updated code to utilize CIM rather than WMI.
  • Added tests for resources
    • xSQLServerConfiguration
    • xSQLServerSetup
    • xSQLServerDatabaseRole
    • xSQLAOGroupJoin
    • xSQLServerHelper and moved the existing tests for Restart-SqlService to it.
    • xSQLServerAlwaysOnService
  • Fixes in xSQLAOGroupJoin
    • Availability Group name now appears in the error message for a failed. Availability Group join attempt.
    • Get-TargetResource now works with Get-DscConfiguration.
  • Fixes in xSQLServerRole
    • Updated Ensure parameter to 'Present' default value.
    • Renamed helper functions -SqlServerRole to -SqlServerRoleMember.
  • Changes to xSQLAlias
    • Add UseDynamicTcpPort parameter for option "Dynamically determine port".
    • Change Get-WmiObject to Get-CimInstance in Resource and associated pester file.
  • Added CHANGELOG.md file.
  • Added issue template file (ISSUE_TEMPLATE.md) for 'New Issue' and pull request template file (PULL_REQUEST_TEMPLATE.md) for 'New Pull Request'.
  • Add Contributing.md file.
  • Changes to xSQLServerSetup
    • Now Features parameter is case-insensitive.
  • BREAKING CHANGE: Removed xSQLServerPowerPlan from this module. The resource has been moved to ComputerManagementDsc and is now called PowerPlan.
  • Changes and enhancements in xSQLServerDatabaseRole
    • BREAKING CHANGE: Fixed so the same user can now be added to a role in one or more databases, and/or one or more instances. Now the parameters SQLServer and SQLInstanceName are mandatory.
    • Enhanced so the same user can now be added to more than one role
  • BREAKING CHANGE: Renamed xSQLAlias to xSQLServerAlias to align with naming convention.
  • Changes to xSQLServerAlwaysOnService
    • Added RestartTimeout parameter
    • Fixed bug where the SQL Agent service did not get restarted after the IsHadrEnabled property was set.
    • BREAKING CHANGE: The mandatory parameters now include Ensure, SQLServer, and SQLInstanceName. SQLServer and SQLInstanceName are keys which will be used to uniquely identify the resource which allows AlwaysOn to be enabled on multiple instances on the same machine.
  • Moved Restart-SqlService from MSFT_xSQLServerConfiguration.psm1 to xSQLServerHelper.psm1.

[3.0.0.0] - 2016-11-02

Changed

  • xSQLServerHelper
    • added functions
      • Test-SQLDscParameterState
      • Get-SqlDatabaseOwner
      • Set-SqlDatabaseOwner
  • Examples
    • xSQLServerDatabaseOwner
      • 1-SetDatabaseOwner.ps1
  • Added tests for resources
    • MSFT_xSQLServerDatabaseOwner

[2.0.0.0] - 2016-09-21

Changed

  • Added resources
    • xSQLServerReplication
    • xSQLServerScript
    • xSQLAlias
    • xSQLServerRole
  • Added tests for resources
    • xSQLServerPermission
    • xSQLServerEndpointState
    • xSQLServerEndpointPermission
    • xSQLServerAvailabilityGroupListener
    • xSQLServerLogin
    • xSQLAOGroupEnsure
    • xSQLAlias
    • xSQLServerRole
  • Fixes in xSQLServerAvailabilityGroupListener
    • In one case the Get-method did not report that DHCP was configured.
    • Now the resource will throw 'Not supported' when IP is changed between Static and DHCP.
    • Fixed an issue where sometimes the listener wasn't removed.
    • Fixed the issue when trying to add a static IP to a listener was ignored.
  • Fix in xSQLServerDatabase
    • Fixed so dropping a database no longer throws an error
    • BREAKING CHANGE: Fixed an issue where it was not possible to add the same database to two instances on the same server.
    • BREAKING CHANGE: The name of the parameter Database has changed. It is now called Name.
  • Fixes in xSQLAOGroupEnsure
    • Added parameters to New-ListenerADObject to allow usage of a named instance.
    • pass setup credential correctly
  • Changes to xSQLServerLogin
    • Fixed an issue when dropping logins.
    • BREAKING CHANGE: Fixed an issue where it was not possible to add the same login to two instances on the same server.
  • Changes to xSQLServerMaxDop
    • BREAKING CHANGE: Made SQLInstance parameter a key so that multiple instances on the same server can be configured

[1.8.0.0] - 2016-08-10

Changed

  • Converted appveyor.yml to install Pester from PSGallery instead of from Chocolatey.
  • Added Support for SQL Server 2016
  • xSQLAOGroupEnsure
    • Fixed spelling mistake in AutoBackupPreference property
    • Added BackupPriority property
  • Added resources
    • xSQLServerPermission
    • xSQLServerEndpointState
    • xSQLServerEndpointPermission
    • xSQLServerAvailabilityGroupListener
  • xSQLServerHelper
    • added functions
      • Import-SQLPSModule
      • Get-SQLPSInstanceName
      • Get-SQLPSInstance
      • Get-SQLAlwaysOnEndpoint
    • modified functions
      • New-TerminatingError - added optional parameter InnerException to be able to give the user more information in the returned message

[1.7.0.0] - 2016-06-29

Changed

  • Resources Added
    • xSQLServerConfiguration

[1.6.0.0] - 2016-05-18

Changed

  • Resources Added
    • xSQLAOGroupEnsure
    • xSQLAOGroupJoin
    • xWaitForAvailabilityGroup
    • xSQLServerEndPoint
    • xSQLServerAlwaysOnService
  • xSQLServerHelper
    • added functions
      • Connect-SQL
      • New-VerboseMessage
      • Grant-ServerPerms
      • Grant-CNOPerms
      • New-ListenerADObject
  • xSQLDatabaseRecoveryModel
    • Updated Verbose statements to use new function New-VerboseMessage
  • xSQLServerDatabase
    • Updated Verbose statements to use new function New-VerboseMessage
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerDatabaseOwner
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerDatabasePermissions
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerDatabaseRole
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerLogin
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerMaxDop
    • Updated Verbose statements to use new function New-VerboseMessage
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerMemory
    • Updated Verbose statements to use new function New-VerboseMessage
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerPowerPlan
    • Updated Verbose statements to use new function New-VerboseMessage
  • Examples
    • Added xSQLServerConfiguration resource example

[1.5.0.0] - 2016-03-30

Changed

  • Added new resource xSQLServerDatabase that allows adding an empty database to a server

[1.4.0.0] - 2016-02-02

Changed

  • Resources Added
    • xSQLDatabaseRecoveryModeAdded
    • xSQLServerDatabaseOwner
    • xSQLServerDatabasePermissions
    • xSQLServerDatabaseRole
    • xSQLServerLogin
    • xSQLServerMaxDop
    • xSQLServerMemory
    • xSQLServerPowerPlan
    • xSQLServerDatabase
  • xSQLServerSetup:
    • Corrected bug in GetFirstItemPropertyValue to correctly handle registry keys with only one value.
    • Added support for SQL Server
    • 2008 R2 installation
    • Removed default values for parameters, to avoid compatibility issues and setup errors
    • Added Replication sub feature detection
    • Added setup parameter BrowserSvcStartupType
    • Change SourceFolder to Source to allow for multi version Support
    • Add Source Credential for accessing source files
    • Add Parameters for SQL Server configuration
    • Add Parameters to SuppressReboot or ForceReboot
  • xSQLServerFirewall
    • Removed default values for parameters, to avoid compatibility issues
    • Updated firewall rule name to not use 2012 version, since package supports 2008, 2012 and 2014 versions
    • Additional of SQLHelper Function and error handling
    • Change SourceFolder to Source to allow for multi version Support
  • xSQLServerNetwork
    • Added new resource that configures network settings.
    • Currently supports only tcp network protocol
    • Allows to enable and disable network protocol for specified instance service
    • Allows to set custom or dynamic port values
  • xSQLServerRSSecureConnectionLevel
    • Additional of SQLHelper Function and error handling
  • xSqlServerRSConfig
  • xSQLServerFailoverClusterSetup
    • Additional of SQLHelper Function and error handling
    • Change SourceFolder to Source to allow for multi version Support
    • Add Parameters to SuppressReboot or ForceReboot
  • Examples
    • Updated example files to use correct DebugMode parameter value ForceModuleImport, this is not boolean in WMF 5.0 RTM
    • Added xSQLServerNetwork example

[1.3.0.0] - 2015-05-01

Changed

  • xSqlServerSetup
    • Make Features case-insensitive.

[1.2.1.0] - 2015-04-23

Changed

  • Increased timeout for setup process to start to 60 seconds.

[1.2.0.0] - 2014-12-18

Changed

  • Updated release with the following new resources
    • xSQLServerFailoverClusterSetup
    • xSQLServerRSConfig

[1.1.0.0] - 2014-10-24

Changed

  • Initial release with the following resources
    • xSQLServerSetup
    • xSQLServerFirewall
    • xSQLServerRSSecureConnectionLevel