T-SQL部署后脚本如何引用变量
问题描述:
我deployng DACPAC与以下部署后SCRIPT1:T-SQL部署后脚本如何引用变量
ALTER DATABASE [$(DatabaseName)]
MODIFY FILE (NAME = [$(DatabaseName)],
SIZE = 100MB, MAXSIZE = UNLIMITED, FILEGROWTH = 20%)
然而,当我尝试引用此部署后SCRIPT2,部署失败:
ALTER DATABASE [$(DatabaseName)]
MODIFY FILE (NAME = [$(DatabaseName)],
SIZE = $(size), MAXSIZE = UNLIMITED, FILEGROWTH = 20%)
所以,我的问题是什么是通过大小正确的语法?
我使用这个命令来启动脚本(第一SCRIPT1作品,SCRIPT2没有)
$resourceGroup = "SQL1"
$vmName = "SQL1"
$storageName = "sql1artifactsstorage111"
$ConfigurationPath = "C:\DSC\Ext\deployDB.ps1"
$ConfigurationName = "deployDB"
$configurationArchive = "deployDB.ps1.zip"
#Publish the configuration script into user storage
Publish-AzureRmVMDscConfiguration -ConfigurationPath $ConfigurationPath -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
$configurationArguments =
@{
Credential = Get-Credential;
DatabaseName = 'Database1'
size = '100MB'
}
Set-AzureRmVmDscExtension -Version 2.22 -Name dscExtension -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName $configurationArchive -AutoUpdate:$true -ConfigurationName $ConfigurationName -ConfigurationArgument $configurationArguments
这是错误DSC显示:
Dac Deploy Failed: 'Exception calling "Deploy"
with "3" argument(s): "An error occurred during deployment plan generation.
Deployment cannot continue."'
答
动态SQL是最后的避难所歹徒:
EXEC ('ALTER DATABASE [$(DatabaseName)] MODIFY FILE (NAME = [$(DatabaseName)],SIZE = $(size), MAXSIZE = UNLIMITED, FILEGROWTH = 20%)');
GO
为我工作,虽然在本地部署,而不是通过Azure D SC。
这是一种通用技术,用于执行通常不支持TSQL变量替换的“DBA类型”活动。
请注意未来的读者:这个招数显然有效,也就是说OP已经标记为答案。但是,由于工作站和构建服务器之间的DacFX版本不同,因此只需要,这可能是,请参阅another SO post relating to the same error message。
你有多个标记为“Post-Deploy”的文件吗?您应该只有一个后期部署文件,并使用:r标签包含要在该后期部署脚本中运行的其他文件。 –
我只有1个部署后脚本 – WinBoss