为SQL Server使用非标准的端口

你正在使用标准的端口号1433来连接SQL Server 2005吗?你考虑过设置SQL Server来监听一个不同于1433的端口号吗?我曾经就是这样。在这篇文章里,我将讨论我是怎样做的,以及我在设置SQL Server 2005去使用一个非标准的端口号时遇到的问题。

使用默认端口号的问题

当你安装SQL Server时,默认实例是监听1433端口号的。众所周知,这是默认的端口号。因此,通常你会看到来自黑客对1433端口的攻击。所以为了最小化黑客通过默认端口号来访问的潜在的威胁,你应该考虑使用一个不同于1433的非标准的端口号。

当安装一个命名实例后,在它启动的时候默认使用的是动态决定的端口号。因此,命名实例每次启动时,都有可能监听不同的端口号。这会有些问题,特别是如果你需要通过防火墙来访问的话。既然端口号可以动态变化,那么你就不能使用防火墙规则来限制用特定端口号访问你的SQL Server。因此,为了限制对你的SQL Server的访问,你需要配置SQL Server去监听一个特定的端口。

怎样配置SQL Server去监听特定的端口

既然默认端口号是易受黑客攻击的,而命名实例又是动态的设置端口号,那么你应该考虑指定你的每一个SQL Server实例去监听一个特定的端口。SQL Server使用一个特定的端口提供了更安全的环境。那么怎样去配置SQL Server 2005使其监听一个不同的端口呢?为了实现这个目标,SQL Server提供了SQL Server配置管理器工具。

为了启动配置管理器,单击开始→程序→Microsoft SQL Server 2005→配置工具→SQL Server 配置管理器。一旦你启动了SQL Server配置管理器,你就可以打开SQL Server 2005网络配置的节点。你这样做完后,就会看到类似下面的屏幕:

这里你可以看到我有4个不同的SQL Server实例在运行。一个是默认实例,叫做MSSQLSERVER,一个是Express版,叫做SQLEXPRESS,接着我有两个命名实例,叫做SERVER1和SERVER2。

为了改变这些实例的端口配置,我将单击一个实例,这样会在右边显示可用的不同协议。下面是我单击实例SERVER2时的屏幕快照:

你可以看到我启动了两个协议,“Shared Memory”和“TCP/IP”。为了改变端口设置,在右边栏里右击TCP/IP协议,然后选择属性选项。当你做完后,将显示下面的屏幕快照:

在这个屏幕里,你可以看到“全部监听”设置为“是”。这意味着该实例将监听所有的IP地址。当你安装SQL Server实例时,监听所有的IP地址是默认设置。如果你想让SQL Server仅监听一个特定的IP地址的话,那么你需要把“全部监听”设置改为“否”。

为了指定你想要让SQL Server监听的特定端口,你需要单击上面屏幕的“IP地址”标签。当你做完后,会显示类似下面的屏幕:

你可以看到IP1和IP2是禁用的(“已启用”选项设置为“否”),在IPALL里的TCP动态端口设置为1317。由于SERVER2是命名实例,在实例启动的时候IP地址是动态设置的,端口1317正好是我的命名实例目前使用的端口号。如果我停止该实例并重启,那么该实例在重启的时候可能使用一个不同的端口,因为端口号是动态设置的。当TCP动态端口选项被设置为0时,它表示数据库引擎正在监听动态端口。

为了确保命名实例使用一致的端口号,或者你想要为默认实例改变默认端口号,你所需要做的就是指定一个特定的端口号来让你的SQL Server实例去监听,就象下面这样:

这里我已经指定了我想使用的端口8484作为我的命名实例SERVER2的端口号。我只需在TCP端口选项里输入这个端口号就行了。

当使用特定端口设置时的客户端连接

客户端连接到一个使用非标准、依赖于你的安装设置的SQL Server实例时,可能会有一些问题,尤其是在你没有运行SQL Server Browser服务的时候。客户端有3种方法连接到一个使用特定非标准端口号的实例。

第一种方法是运行SQL Server Browser服务。当这个服务运行的时候,它会通知客户端要求连接的实例正在使用的端口号。这可以避免客户端在连接一个SQL Server实例时必需知道端口号的情形。如果你想要更安全的环境,那么你不要运行SQL Server Browser服务。通过不运行SQL Server Browser服务,客户端为了连接SQL Server就需要在连接字符串里指定正确的端口号。

第二个方法是在客户端机器上创建一个SQL Server的别名。通过运行SQL Server配置管理器工具可以在客户端机器上创建一个别名。在SQL Native Client节点下,右击别名然后选择新建别名。做完后会出现新建别名对话框。在该对话框里,你可以创建一个别名,并指定该别名的实例和端口号。下面这个屏幕快照显示了我是怎样为我的指定了使用端口号8484来连接的命名实例SERVER2创建别名的。

注意我已经指定了别名为SERVER2,它使用的端口号是8484,并且服务器选项的值为SERVER2。创建该别名来把别名SERVER2与端口号为8484的服务器SERVER2相关联。一旦我指定这些信息,我就可以单击确定按钮或者单击应用再单击确定按钮来创建别名了。

最后一个方法是在连接字符串里通过编程来指定端口号。由于我不是一个连接字符串的大师,所以我不敢保证所有不同的方法都能达到这个目标,但有一个方法可行,就是在连接字符串里连同服务器名称一起指定端口号。这可以通过在服务器名称后立即输入“,<端口号>”来实现。所以对于我上面的例子SERVER2,我将有一个类似下面的连接字符串:

Data Source=SERVER2,8484;Initial Catalog=AdventureWorks

注意我已经在连接字符串的Data Source参数里的服务器名称的后面添加了“,8484”。

更改SQL实例端口的更多相关文章

  1. 教你管理SQL实例系列(1-15)

    全系列转自:51CTO ->jimshu http://jimshu.blog.51cto.com 目录及原本连接如下: 教你管理SQL实例(1)数据库实例 教你管理SQL实例(2)服务启动帐户 ...

  2. SQLserver安装了多个实例,实例端口号也被修改后的代码连接方式

    事例说明 IP地址为192.168.1.100的服务器上安装了SQLServer2000,它有两个实例,分别为:默认实例——JLW和另外新建的实例——JLW\TEST SQLServer网络实用工具中 ...

  3. SQL学习笔记----更改SQL默认的端口号

    1.SQLServer配置管理器----SQLServer网络配置----MSSQLSERVER的协议---TCP/IP(已启用)---IP地址 清空素有的IP,在IPALL下更改默认的端口: 2. ...

  4. SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法

    我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...

  5. 更改Oracle实例的字符集

    (1).数据库服务器字符集select * from nls_database_parameters 来源于props$,是表示数据库的字符集. (2).服务端字符集环境select * from n ...

  6. Windows 2003/2008更改远程桌面端口脚本

    保存为bat文件,点击运行按提示输入新端口自动完成,直接下载更改远程桌面端口脚本   @echo off color 0a title @@ 修改Windows XP/2003/2008远程桌面服务端 ...

  7. 搜索本地网络内所有可用的SQl实例

    '搜索本地网络内所有可用的SQl实例 Dim instance As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance Dim dt ...

  8. SQL Server 端口号的使用

    SQL Server 端口号的使用 服务器地址  逗号 端口号 服务器地址,端口号 xxx.xxx.xxx.xxx,0000 www.xxx.com,1533  (1533是SQL Server 的端 ...

  9. 学习《Oracle PL/SQL 实例讲解 原书第5版》----创建账户

    通过readme.pdf创建student账户. 以下用sys账户登录时都是sysdba. 一.PL/SQL 登录oracle. SYS/123  AS SYSDBA 账户名:sys:密码:123:作 ...

随机推荐

  1. NMS—卷积神经网络

    1-传统的NMS NMS,非极大值抑制,在很多计算机视觉问题中有着重要应用,尤其是目标检测领域. 以人脸检测为例,通常的流程为3步: (1)通过滑动窗口或者其它的object proposals方法产 ...

  2. Nodejs学习笔记(十二)—定时任务(node-schedule)

    写在之前 在实际开发项目中,会遇到很多定时任务的工作.比如:定时导出某些数据.定时发送消息或邮件给用户.定时备份什么类型的文件等等 一般可以写个定时器,来完成相应的需求,在node.js中自已实现也非 ...

  3. redis实战笔记(7)-第7章 基于搜索的应用程序

    本章主要内容   使用Redis进行搜索 对搜索结果进行排序 实现广告定向 实现职位搜索    

  4. 安装sublime text2 for ubuntu

        Add our Sublime Text 2 Ubuntu PPA using the following commands: sudo add-apt-repository ppa:webu ...

  5. 深入了解Java虚拟机(3-1)虚拟机类加载机制

    虚拟机类加载机制 一.类加载的阶段和时机 1.阶段 整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(I ...

  6. [转] What is a Full Stack developer?

    期望一个凡人掌握开发过程中各个方面的知识,合理吗?也许不合理,但是Facebook正是要寻找这样的人.在一个OSCON会议上,一名Facebook的工程师告诉我的,他们只聘请“全能(Full stac ...

  7. SqlServer入门学习

    --distinct(去除重复数据)select distinct Time from HightTable--Between select * from HightTable where ID BE ...

  8. ASPxGridView行的选中和行的焦点

    <SettingsBehavior AllowFocusedRow="true" /> 行的焦点,行的点击以及Command列按钮点击可以得到焦点 Styles-Foc ...

  9. javascript加上标签

    在javascript脚本中可以加上标签,方便javascript程序进行快速定位,标签一般由一个合法的字符名称加上一个冒号组成,标签可以放在任意行的位置,这样可以为该行设置一个标记,然后再 结构体中 ...

  10. [javaSE] 位运算符(&|^)

    位运算是直接对二进制进行计算 左移 << 右移 >> 先把整数换成四个8bit 0000-0000 0000-0000 0000-0000 0000-0000 这个二进制左右移 ...