我在我的客户端位置安装了MS SQL Server,我需要将数据库记录提取到存储在我所在位置的服务器中,任何人都建议我如何通过使用ip地址通过Internet访问SQL Server数据库。我将使用JDBC从数据库中检索数据。
答案 0 :(得分:2)
为了建立成功的远程连接,需要通过Window Firewall设置适当的端口。在SQL Server中有两种类型的实例。第一个是默认实例,第二个是命名实例。要连接到数据库引擎的默认实例或作为计算机上安装的唯一实例的命名实例,TCP端口1433是您需要指定的唯一端口。
但是如果您的计算机上安装了多个名称实例,要与其中一个连接,我们必须提供与相应实例名称对应的端口号。默认情况下,命名实例使用动态端口,这意味着每次数据库引擎启动时都会分配新的端口号。因此,很难配置Windows防火墙以启用访问。
为了解决此问题,有一个SQL Browser服务,它提供与命名实例对应的TCP端口号。 SQL浏览器服务使用UDP端口1434.现在我们遇到了与远程连接有关的基本问题,让我们继续安装程序。
启用TCP / IP协议
第一步是在SQL Server服务上启用TCP / IP协议。在Microsoft SQL Server文件夹下的Configuration Tools文件夹中打开SQL Server配置管理器:
从“SQL Server网络配置”节点中,选择相应SQL Server的“协议”项。在详细信息窗格中,右键单击TCP / IP项,然后选择“启用”选项:
在此步骤之后会弹出警告框,通知我们在下次启动服务之前所做的更改不会生效。
要使更改生效,请从控制台窗格中选择SQL Server服务,然后在详细信息窗格中右键单击SQL Server(SQLEXPRESS)数据库引擎实例,然后单击“重新启动”选项:
现在服务启动时启用了TCP / IP,但在配置Windows防火墙之前仍然无法远程连接。
配置Windows防火墙 从“控制面板”中选择“Windows防火墙”,然后单击“高级”设置或在“开始”菜单中键入搜索程序和文件中的wf.msc:
在具有高级安全性的Windows防火墙中,单击左窗格中的“入站规则”,右键单击“入站规则”并选择“新建规则”,或者从“操作”窗格中单击“新建规则”:
您将点击它,这取决于您。在这两种情况下,都会出现“新建入站规则向导”。在Rule Type下,选择Port并单击Next按钮:
在协议和端口中,您可以选择几个选项,具体取决于您选择的协议类型。
如果您想知道可以从此链接找到的TCP和UDP协议之间的区别。
正如我们在本文开头所提到的,TCP用于默认实例,而命名实例if是机器上安装的唯一实例,默认端口是1433.
所有本地端口:规则适用于所选协议的所有端口。 特定本地端口:在文本框中,指定规则适用的端口或端口集。 对于此示例,请选择UDP协议,然后在特定本地端口中输入端口号1434.要继续设置SQL Browser服务,请单击“下一步”按钮:
在Action对话框中,选择Allow the connection并单击Next按钮:
域:仅当计算机连接到域时才应用该设置。 专用:当计算机连接到标识为专用网络的网络时,将应用此设置。 公共:当计算机连接到不受信任的公共网络时应用该设置。
在“配置文件”对话框中,选择所有三个配置文件,然后单击“下一步”:
在此步骤中,为规则指定名称,然后单击“完成”。
注意:当我们提供规则的名称时,请写下一些您以后可以理解的描述性名称,当您需要在入站规则列表中查找或编辑时。
现在为数据库引擎实例创建一个允许规则。
转到新规则,然后从规则类型中选择自定义规则:
在“服务”下的“程序”中,单击“自定义”按钮:
从“应用于此服务”下的“自定义服务设置”中选择数据库引擎实例服务,然后单击“确定”按钮:
然后单击Next到Name对话框,给规则命名并单击Finish:
现在,当设置了所有规则时,您就可以连接到远程SQL Server了。
启动SQL Server,在服务器名称的对话框窗口中输入要连接的实例的名称。从“身份验证”下拉框中,选择“SQL Server身份验证”,然后在“登录”和“密码”字段中输入您的凭据,然后单击“连接”按钮。
答案 1 :(得分:1)
您可以找到有关如何通过JDBC here对SQL执行conn字符串的Microsoft文档,但它基本上等于
function prnEmailList($prnID)
{
$q = $this->db->query("SELECT pm.* , prm.*,e.* from principal_master pm ,principal prm,email e where pm.prnID=e.prnID and prm.prID= pm.prID and e.prnID='" .$prnID."'");
if($q->num_rows()>0) {
foreach($q ->result() as $row)
{
$data[] = $row;
}
return $data;
}
}
话虽这么说,通常让数据库服务器对互联网开放是一个坏主意,除非你只是为了测试而做。我建议调查类似VPN或至少在客户端位置设置防火墙,只允许你所谓的“我的地方”的IP(不是100%完美的解决方案,但总比没有好)。话虽如此,您还需要确保客户端的任何防火墙也允许您设置SQL运行的任何端口(默认为1433)。