Examples/Resources/SqlScriptQuery/3-RunScriptCompleteExample.ps1

<#
.EXAMPLE
    This example uses the Configuration Data to pass the Query Strings fo SqlScriptQuery Resource.
#>


$ConfigurationData = @{
    AllNodes = @(
        @{
            NodeName     = 'localhost'
            ServerName   = $env:COMPUTERNAME
            InstanceName = 'DSCTEST'
            DatabaseName = 'ScriptDatabase1'

            GetSqlQuery  = @'
SELECT Name FROM sys.databases WHERE Name = '$(DatabaseName)' FOR JSON AUTO
'@


            TestSqlQuery = @'
if (select count(name) from sys.databases where name = '$(DatabaseName)') = 0
BEGIN
    RAISERROR ('Did not find database [$(DatabaseName)]', 16, 1)
END
ELSE
BEGIN
    PRINT 'Found database [$(DatabaseName)]'
END
'@


            SetSqlQuery = @'
CREATE DATABASE [$(DatabaseName)]
'@


            <#
                NOTE! THIS IS NOT RECOMMENDED IN PRODUCTION.
                This is added so that AppVeyor automatic tests can pass, otherwise
                the tests will fail on passwords being in plain text and not being
                encrypted. Because it is not possible to have a certificate in
                AppVeyor to encrypt the passwords we need to add the parameter
                'PSDscAllowPlainTextPassword'.
                NOTE! THIS IS NOT RECOMMENDED IN PRODUCTION.
            #>

            PSDscAllowPlainTextPassword = $true
        }
    )
}

Configuration Example
{
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.Management.Automation.PSCredential]
        $SqlAdministratorCredential
    )

    Import-DscResource -ModuleName 'PSDscResources'
    Import-DscResource -ModuleName 'SqlServerDsc'

    node localhost {

        SqlScriptQuery 'Integration_Test'
        {
            ServerInstance       = Join-Path -Path $Node.ServerName -ChildPath $Node.InstanceName

            GetQuery             = $Node.GetSqlQuery
            TestQuery            = $Node.TestSqlQuery
            SetQuery             = $Node.SetSqlQuery
            Variable             = @(
                ('DatabaseName={0}' -f $Node.DatabaseName)
            )
            QueryTimeout         = 30

            PsDscRunAsCredential = $SqlAdministratorCredential
        }
    }
}