AzureDevOps-Azure SQL Server部署问题和解决方案

时间:2019-08-06 06:22:29

标签: sql-server azure azure-devops azure-sql-database azure-pipelines

部署Azure SQL服务器时遇到的众所周知问题的解决方案是什么?

问题1

##[error]System.Management.Automation.ParentContainsErrorRecordException: *** Deployment cannot continueAn error occurred during deployment plan generation.

问题2

##[error]Publishing to database 'testdb' on server 'ajyatest.database.windows.net'. Initializing deployment (Start) Initializing deployment (Failed) *** Could not deploy package. Unable to connect to master or target server 'testdb'. You must have a user with the same password in master or target server 'testdb'.

问题3

##[error]System.Management.Automation.RuntimeException: No resource found with serverName ajyatest1, serverType Microsoft.Sql/servers in subscription <SubscriptionId>. Specify the correct serverName/serverType and try again.

问题4

Server name 'ajyatest1' is not in the right format. Use FQDN format like 'yyy.database.windows.net'

问题5

##[error]System.Net.WebException: The remote server returned an error: (404) Not Found. 

问题6

##[error]Start IP address of firewall rule cannot exceed End IP address.

问题7

##[error]Invalid value provided for parameter: startIpAddress

问题8

##[error] Named pipes provider, error: 40 – could not open a connect to SQL. 
Possible suggestions

问题9

如何为SQLPackage.exe配置超时?

问题10

托管代理是否支持具有AAD集成身份验证的Azure SQL数据库部署?

问题11

Azure SQL数据库部署-导入的Invoke-Sqlcmd不支持connectionString

问题12

SqlPackage.exe参数/p:BackupDatabaseBeforeChanges=true在Azure上失败

问题13

Azure SQL发布-SQL脚本文件-无法将秘密值作为变量传递

1 个答案:

答案 0 :(得分:1)

问题1

##[error]System.Management.Automation.ParentContainsErrorRecordException: *** Deployment cannot continueAn error occurred during deployment plan generation.

原因

您要在其上部署dacpac的SQL Server的目标平台与dacpac文件的目标平台不同。

可能的解决方案

  1. 将dacpac项目中的目标平台更改为与SQL Server的目标平台相同。 enter image description here

  2. 将/ p:AllowIncompatiblePlatform = true参数添加为WinRm SQL Server任务的附加参数。

问题2

##[error]Publishing to database 'testdb' on server 'ajyatest.database.windows.net'. Initializing deployment (Start) Initializing deployment (Failed) *** Could not deploy package. Unable to connect to master or target server 'testdb'. You must have a user with the same password in master or target server 'testdb'.

原因

SQL服务器的用户名或密码错误。

可能的解决方案

检查用户名和密码是否适合SQL Server。 [您可以使用SSMS验证用户名密码]

问题3

##[error]System.Management.Automation.RuntimeException: No resource found with serverName ajyatest1, serverType Microsoft.Sql/servers in subscription <SubscriptionId>. Specify the correct serverName/serverType and try again.

原因

错误的SQL Server名称错误。

可能的解决方案

检查Azure门户上是否存在具有相同名称的SQL Server。

问题4

Server name 'ajyatest1' is not in the right format. Use FQDN format like 'yyy.database.windows.net'

原因

SQL服务器作为输入,未作为FQDN提供。

可能的解决方案

错误中提到,本身以'yyy.database.windows.net'格式提供SQL Server

问题5

##[error]System.Net.WebException: The remote server returned an error: (404) Not Found. 

原因

检查用于创建防火墙规则的端点URL。验证端点的URL是否为最新。

可能的解决方案

检查端点有什么问题。用户如何创建端点。

问题6

##[error]Start IP address of firewall rule cannot exceed End IP address.

原因

用于创建防火墙规则的结束IP小于开始IP。

可能的解决方案

起始IP的IP地址应小于结束IP地址。

问题7

##[error]Invalid value provided for parameter: startIpAddress

原因

IP地址格式不正确。

可能的解决方案

起始IP的IP地址应小于结束IP地址。

问题8

##[error] Named pipes provider, error: 40 – could not open a connect to SQL. 
Possible suggestions

建议

对于onPrem SQL Server 1. SQL Server名称应采用正确的格式server \ instance。 2.验证连接字符串。 3.检查是否在SQL实例上启用了命名管道(NP)。 4.是否启用了远程连接。

  For Azure SQL server 

1。它可能导致按应用程序节流。 2.尝试使用端口1433指定Azure SQL服务器名称。 servername.database.windows.net,1433;

问题9

如何为SQLPackage.exe配置超时?

解决方案

/p:CommandTimeout=1200  /TargetTimeout: 1200 

问题10

托管代理是否支持具有AAD集成身份验证的Azure SQL数据库部署?

解决方案

否,AAD集成身份验证尝试使用运行代理的同一用户登录SQL Server。由于安全原因,托管代理用户将没有对SQL Server的权限,因此它将失败。换句话说,托管代理不支持AAD集成身份验证。以为您可以使用Active Directory-密码身份验证。

问题11

Azure SQL数据库部署-导入的Invoke-Sqlcmd不支持connectionString

解决方案 导入的Invoke-Sqlcmd不支持connectionString。安装SQLServer PS模块。

问题12

SqlPackage.exe参数/p:BackupDatabaseBeforeChanges=true在Azure上失败

解决方案

/p:BackupDatabaseBeforeChanges=true选项适用于本地数据库。该选项不适用于Azure,因为备份系统完全不同。

问题13

Azure SQL发布-SQL脚本文件-无法将秘密值作为变量传递

解决方案

SQL脚本文件支持秘密变量。确保按如下方式传递变量的参数。

Invoke-Sqlcmd -ServerInstance "test.database.windows.net" -Database "Testdb" -Username "test"  -Password ******  -Inputfile "C:\test.sql" -variable "MYVAR1='$(variablevalue1)'", "MYVAR2='String2'" -ConnectionTimeout 120

调试工具和建议

SQLPackage.exe参数的文档

SQL Package arguments

为SQLPackage.exe配置诊断日志

/diagnostics:true

从任务获取调试日志

将发布定义变量system.debug设置为值true

SqlCMD参数

SqlCmd arguments

比较SqlCmd和Invoke-SqlCmd参数

SqlCmd vs Invoke-SqlCmd arguments