似乎您只能使用AzureServiceManagement模式通过Azure上的Powershell创建SQL Server。这将为我创建一个名为" Default-SQL-WestUS"的默认资源组的新服务器。但是,如何将其置于现有资源组中,以便我可以将其与其他相关资源一起管理?
当我尝试使用AzureResourceManagement时,Cmndlet会对-Name参数进行阻塞:
New-AzureResource -Name "testName" -Location "West US" -ResourceGroupName "TestGroupName" -ResourceType Microsoft.Sql/servers -ApiVersion "2014-04-01"
当我运行以上内容时,我得到:
''是无效的名称,因为它包含NULL字符或无效的unicode字符。
我还删除了-Name参数(认为Azure应该为我创建此名称,就像使用ServiceManager一样):
New-AzureResource -Location "West US" -ResourceGroupName "TestGroupName" -ResourceType Microsoft.Sql/servers -ApiVersion "2014-04-01"
但这只是提示我输入一个名字,我也得到同样的错误。我也试过为名称使用null值并获得以下内容:
无法验证参数'名称'的参数。参数为null或空。提供一个非null或空的参数,然后尝试 命令再次。
是否有更好的方法在Azure中的ResourceGroup中创建新的SQL Server?
提前致谢!
- 更新: -
您似乎 必须 使用AzureServiceManagement Mode创建SqlServer。您无法将SqlServer链接到资源组(将来会出现这种情况吗?)。
但你应该能够将SQL数据库添加到ResourceManager。所以我切换到ServiceManagement模式,创建了一个SqlServer,切换回ResourceManagement模式,创建了一个资源组,并且我已经更新了我的数据库创建脚本,以便链接到服务器和资源组,如下所示:
New-AzureResource –Name "TestDBName" –ResourceType Microsoft.Sql/servers/databases –ResourceGroup "TestGroupName" –Location "West US" -ApiVersion "2014-04-01" –ParentResource servers/[servername]
我在网上的许多例子中都看到了正确的方法,但由于某种原因,我现在只是得到一个一般性的错误,没有迹象表明出了什么问题
New-AzureResource ::处理此请求时出错。
我希望能够在Azure上将SqlServer创建到现有的ResourceGroup中,然后通过PowerShell将数据库添加到服务器。我会继续在我的脚本上尝试不同的变化来使其工作,但我觉得好像我已经撞墙了。非常感谢(和积分)给任何可以提供帮助的人!
答案 0 :(得分:2)
以下是有关如何使用PS cmdlet创建SQL Server资源的工作示例。问题是您缺少一些强制性参数,例如服务器和管理员凭据。等等。
New-AzureResource -Name server1 -ResourceGroupName "Default-SQL-WestUS" -Location "West US" -ResourceType "Mirosoft.Sql/servers" -ApiVersion 2014-04-01 -PropertyObject @{administratorLogin="admin"; administratorLoginPassword="Passw@rd01"; version="12.0"}
您还可以将模板与New-AzureResourceGroup cmdlet一起使用来创建服务器。见下面的模板。
{
"$schema": "http://schemas.management.azure.com/deploymentTemplate?api-version=2014-04-01-preview",
"contentVersion": "1.0.0.0",
"parameters": {
"administratorLogin": {
"type": "string"
},
"administratorLoginPassword": {
"type": "securestring"
},
"serverLocation": {
"type": "string"
},
"serverName": {
"type": "string"
}
},
"resources": [
{
"apiVersion": "2014-04-01-preview",
"location": "[parameters('serverLocation')]",
"name": "[parameters('serverName')]",
"properties": {
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"version": "12.0"
},
"resources": [
{
"apiVersion": "2014-04-01-preview",
"dependsOn": [
"[concat('Microsoft.Sql/servers/', parameters('serverName'))]"
],
"location": "[parameters('serverLocation')]",
"name": "AllowAllWindowsAzureIps",
"properties": {
"endIpAddress": "131.107.255.255",
"startIpAddress": "131.107.0.0"
},
"type": "firewallrules"
}
],
"type": "Microsoft.Sql/servers"
}
]
}
答案 1 :(得分:1)
如果您使用Azure PowerShell 1.0或更高版本,并且安装了AzureRM.Sql模块,则可以使用New-AzureRmSqlServer来实现此目的。
有关详细信息,请参阅official Azure docs。
# Login to your Azure account
Add-AzureRmAccount
# Select an appropriate subscription
Select-AzureRmSubscription -SubscriptionId 4cac86b0-1e56-bbbb-aaaa-000000000000
# Create a new resource group and put a SQL server in it
# It will prompt you for the credentials that you want to set
# for the SQL administrator account
New-AzureRmResourceGroup -Name "yourresourcegroup" -Location "East US" | `
New-AzureRmSqlServer -ServerName "yoursqlservername" -Location "East US" `
-ServerVersion "12.0"
请注意,这不会配置任何防火墙规则或数据库。您需要使用New-AzureRmSqlServerFirewallRule
和New-AzureRmSqlDatabase
来执行此操作。