可以不开防火墙设置链接"linked server"吗?

Can I set up a linked "linked server" without opening the firewall?

我的问题

我正在尝试与远程 SQL 服务器建立连接。虽然我有服务器名、端口、用户和密码,但我无法访问。这可能意味着他们在防火墙设置中有一些 IP 限制。

现在他们说如果我将他们的服务器添加为 "linked server",问题就会得到解决。但是,此功能不适用于 Azure SQL,因此在我对我的设置进行重大更改之前,我只想确定这是否能解决任何问题....所以...

添加 "linked server" 是否可以绕过更改防火墙? - 我的直觉说不...

另外,连接远程数据库时,"server name"/"domain name"是否足够,还是我还需要ip?

添加 linked 服务器

link: https://docs.microsoft.com/en-us/sql/relational-databases/linked-servers/create-linked-servers-sql-server-database-engine?view=sql-server-2017

# Setting up the link
Copy
USE [master]  
GO  
EXEC master.dbo.sp_addlinkedserver   
    @server = N'SERVER\NAME',   
    @srvproduct=N'SQL Server' ;  
GO  

#Configuring the linked server to use the domain credentials
Copy
EXEC master.dbo.sp_addlinkedsrvlogin   
    @rmtsrvname = N'SRVR002\ACCTG',   
    @locallogin = NULL ,   
    @useself = N'True' ;  
GO

正在检索 SQL 服务器 IP

SELECT  
    CONNECTIONPROPERTY('net_transport') AS net_transport,
    CONNECTIONPROPERTY('protocol_type') AS protocol_type,
    CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
    CONNECTIONPROPERTY('local_net_address') AS local_net_address,
    CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
    CONNECTIONPROPERTY('client_net_address') AS client_net_address

为了测试,我删除了我的 Azure SQL 数据库防火墙的所有规则。

然后我连接到我的本地 SQL 服务器并创建一个到 Azure SQL 数据库的链接服务器,遵循这些教程:How to create a linked server to Azure SQL Database via SQL Server Management Studio and Create Linked Servers.

我收到错误消息:

Cannot open server '****' requested by the login. Client with IP address '..*.' 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. (Microsoft SQL Server, Error: 40615)

然后我将客户端IP添加到Azure SQL数据库防火墙,链接服务器创建成功。

关于你的两个问题:

  1. Can I set up a linked “linked server” without opening the firewall?

不,你不能。您必须将客户端 IP 添加到您的防火墙。

  1. Is the "server name"/"domain name" enough when connecting to a remote database, or do I also need the ip?

是的,是的。您不需要 IP。

希望对您有所帮助。