Я развертываю ms sql сервер, брандмауэр, базу данных и sql входы (и другие) через terraform.
Сервер, брандмауэр и база данных развернуты правильно, а вход через PowerShell завершается ошибкой со следующей ошибкой:
': статус выхода 1. Вывод: Invoke-Sqlcmd: База данных «Система» не существует. Убедитесь, что имя введено правильно.
Мой код terraform выглядит так:
resource "azurerm_mssql_server" "itan-mssql-server" {
administrator_login = "itanadmin"
administrator_login_password = random_password.itan-mssql-admin-password.result
location = var.location
name = "itan-mssql-server"
resource_group_name = var.resource-group-name
version = "12.0"
depends_on = [
azurerm_resource_group.itan-west-europe-resource-group]
}
resource "azurerm_sql_firewall_rule" "itan-mssql-server-firewall-rule" {
start_ip_address = "${chomp(data.http.myip.body)}"
end_ip_address = "${chomp(data.http.myip.body)}"
name = "itan-tf-client-executer-ip"
resource_group_name = var.resource-group-name
server_name = azurerm_mssql_server.itan-mssql-server.name
depends_on = [azurerm_mssql_server.itan-mssql-server]
}
resource "azurerm_mssql_database" "itan-mssql-database" {
name = "itan"
server_id = azurerm_mssql_server.itan-mssql-server.id
sku_name = "basic"
max_size_gb = "2"
depends_on = [
azurerm_mssql_server.itan-mssql-server]
}
resource "null_resource" "itan-mssql-logins" {
provisioner "local-exec" {
command =<<EOT
$server = Get-AzSqlServer
$createReaderLogin = @{
'ServerInstance' = "${azurerm_mssql_server.itan-mssql-server.fully_qualified_domain_name}"
'Database' = "itan"
'Username' = "${azurerm_mssql_server.itan-mssql-server.administrator_login}"
'Password' = "${random_password.itan-mssql-admin-password.result}"
'Query' = "SELECT * FROM Students";
}
Invoke-Sqlcmd $createReaderLogin
EOT
interpreter = ["PowerShell", "-Command"]
}
depends_on = [azurerm_sql_firewall_rule.itan-mssql-server-firewall-rule]
}
Последняя часть, null_resource
, разбирается примерно так:
$server = Get-AzSqlServer
$createReaderLogin = @{
'ServerInstance' = "server.database.windows.net"
'Database' = "database"
'Username' = "admin"
'Password' = "***********"
'Query' = "SELECT * FROM Students";
}
- Уже уничтожено, не беспокойтесь о пароле.
- Я знаю, что мне нужно создать логин на главной базе данных, а следующего пользователя на правильной базе данных, этот выбор * просто пример неудачного запроса
Я протестировал, и после создания сервера, брандмауэра, базы данных мне удалось подключить azure ms sql с ms sql. Однако при запуске Invoke-SqlCmd
происходит сбой с «База данных« Система »не существует»
ПОЧЕМУ? Боролся с этим уже около 2 дней.
В основном я пытаюсь создать логинов / пользователей с выделенными sql правами (db_read / db_write).