Azure Sql实战过程3 - 防火墙配置和连接调试

Posted 王者★孤傲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Sql实战过程3 - 防火墙配置和连接调试相关的知识,希望对你有一定的参考价值。



  这时数据库实例已经完全启动,当然现在还不能连接,需要完成防火墙设置、远程客户端调试。

  

1、防火墙配置

  点击左侧的收藏夹中的“SQL数据库”,可以在SQL面板中看到已经配置的SQL实例,如下:

   

  

   点击实例,进入实例的详细页面。

  

  

  在工具栏上选择“设置服务器防火墙” 。 此时会打开数据库服务器的“防火墙设置”页 。在概述和配置中都可以进入该功能。

  

  

  点击“添加客户端IP” ,此时在下方规则面板中会自动导入客户端ip,建议:如果点击了一次发现客户端ip的输入框后面没有自动打钩,建议再次点击“添加客户端IP”,一般这种情况会很少发生。

  

  

  记得点击“保存”,保存刚才的ip配置

  

  

2、数据库web端调试连接

  返回总的数据库实例详情页面,点击“查询编辑器(预览)”,菜单,如下:

        

  

  在“SQL Server 身份验证”中输入数据库登录的用户名和密码,再点击“确定”,尝试登录数据库。

  

  

  错误信息如下:

Cannot open server \'databaseserver\' requested by the login. 
Client with IP address \'223.104.90.105\' is not allowed to access the server.
To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range.
It may take up to five minutes for this change to take effect.

  

  这时,需要将web端ip设置进防火墙,步骤如图,点击“设置服务器防火墙 (databaseserver)” ,安装1的步骤手动设置防火墙。

 

  

  

  返回web登录界面,重新尝试登录。这时已经可以看到连接进入数据库的样子

  

  

3、数据库远程客户端调试连接

  在数据库概述面板中,复制服务器名称,方便远程客户端的连接。

  

  

  打开Windows本地的“Microsoft SQL Server Management Studio 18”工具,服务器类型设置为“数据库引擎”,身份验证选择“SQL Server 身份验证”。如图:

  

  点击连接,就可以进入连接界面。

  

  

4、数据库程序端配置方案

  进入“连接字符串界面”,可以看到该数据库所支持连接方案,如图:

 

  所支持的方式如下:

1)、ADO.NET (SQL 身份验证)

Server=tcp:databaseserver.database.chinacloudapi.cn,1433;Initial Catalog=mySampleDatabase;Persist Security Info=False;User ID=adminer;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

 

2)、JDBC (SQL 身份验证)

jdbc:sqlserver://databaseserver.database.chinacloudapi.cn:1433;database=mySampleDatabase;user=adminer@databaseserver;password={your_password_here};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.chinacloudapi.cn;loginTimeout=30;

 

3)、ODBC (包括 Node.js) (SQL 身份验证)

Driver={ODBC Driver 13 for SQL Server};Server=tcp:databaseserver.database.chinacloudapi.cn,1433;Database=mySampleDatabase;Uid=adminer;Pwd={your_password_here};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;

 

4)、php (SQL 身份验证)

<?php
// PHP Data Objects(PDO) Sample Code:
try {
    $conn = new PDO("sqlsrv:server = tcp:databaseserver.database.chinacloudapi.cn,1433; Database = mySampleDatabase", "adminer", "{your_password_here}");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
    print("Error connecting to SQL Server.");
    die(print_r($e));
}

// SQL Server Extension Sample Code:
$connectionInfo = array("UID" => "adminer", "pwd" => "{your_password_here}", "Database" => "mySampleDatabase", "LoginTimeout" => 30, "Encrypt" => 1, "TrustServerCertificate" => 0);
$serverName = "tcp:databaseserver.database.chinacloudapi.cn,1433";
$conn = sqlsrv_connect($serverName, $connectionInfo);
?>

 

5)、Go (SQL 身份验证)

// Go connection Sample Code:
package main
import (
    github.com/denisenkom/go-mssqldb
    database/sql
    context
    log
    fmt
    errors
)

var db *sql.DB
var server = "databaseserver.database.windows.net"
var port = 1433
var user = "adminer"
var password = "<your_password>"
var database = "mySampleDatabase"

func main() {
    // Build connection string
    connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
        server, user, password, port, database)
    var err error
    // Create connection pool
    db, err = sql.Open("sqlserver", connString)
    if err != nil {
        log.Fatal("Error creating connection pool: ", err.Error())
    }
    ctx := context.Background()
    err = db.PingContext(ctx)
    if err != nil {
        log.Fatal(err.Error())
    }
    fmt.Printf("Connected!")
}

 

以上是关于Azure Sql实战过程3 - 防火墙配置和连接调试的主要内容,如果未能解决你的问题,请参考以下文章

Azure Sql实战过程2 - 单一数据实例与配置

来自 C# 的 Azure SQL DB 连接问题

Azure SQL 连接到选定网络的 Azure 存储

即使选项在防火墙设置中设置为 yes,Azure SQL Server 防火墙也不允许操作连接

Azure 服务结构和混合连接

如何建立sqlserver 外部数据库连接