更改SQL实例端口
为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实例端口的更多相关文章
- 教你管理SQL实例系列(1-15)
全系列转自:51CTO ->jimshu http://jimshu.blog.51cto.com 目录及原本连接如下: 教你管理SQL实例(1)数据库实例 教你管理SQL实例(2)服务启动帐户 ...
- SQLserver安装了多个实例,实例端口号也被修改后的代码连接方式
事例说明 IP地址为192.168.1.100的服务器上安装了SQLServer2000,它有两个实例,分别为:默认实例——JLW和另外新建的实例——JLW\TEST SQLServer网络实用工具中 ...
- SQL学习笔记----更改SQL默认的端口号
1.SQLServer配置管理器----SQLServer网络配置----MSSQLSERVER的协议---TCP/IP(已启用)---IP地址 清空素有的IP,在IPALL下更改默认的端口: 2. ...
- SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法
我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...
- 更改Oracle实例的字符集
(1).数据库服务器字符集select * from nls_database_parameters 来源于props$,是表示数据库的字符集. (2).服务端字符集环境select * from n ...
- Windows 2003/2008更改远程桌面端口脚本
保存为bat文件,点击运行按提示输入新端口自动完成,直接下载更改远程桌面端口脚本 @echo off color 0a title @@ 修改Windows XP/2003/2008远程桌面服务端 ...
- 搜索本地网络内所有可用的SQl实例
'搜索本地网络内所有可用的SQl实例 Dim instance As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance Dim dt ...
- SQL Server 端口号的使用
SQL Server 端口号的使用 服务器地址 逗号 端口号 服务器地址,端口号 xxx.xxx.xxx.xxx,0000 www.xxx.com,1533 (1533是SQL Server 的端 ...
- 学习《Oracle PL/SQL 实例讲解 原书第5版》----创建账户
通过readme.pdf创建student账户. 以下用sys账户登录时都是sysdba. 一.PL/SQL 登录oracle. SYS/123 AS SYSDBA 账户名:sys:密码:123:作 ...
随机推荐
- Ubuntu-16.04 R 安装及Jupyter notebook 配置
1. R 安装 通常在Terminal下直接apt-get 即可,在16.10下可以get到R-3.3.1,目前最新好像是 R-3.4.2,可以去官方网站下载源码编译 (https://www.r-p ...
- 《深入理解Java虚拟机》目录
第一部分 走进Java 第1章 走进Java 第二部分 自动内存管理机制 第2章 Java内存区域与内存溢出异常 2.2 运行时数据区域 2.3 HotSpot虚拟机对象探秘 第3章 垃圾收集器与 ...
- Markdown编辑器-图形化
SELECT * from yffee_favourable_detail yfd LEFT JOIN yffee_favourable yf on yfd.minor_id = yf.major_i ...
- MVC中使用Castle.Windsor
我在MVC中使用Castle.Windsor是这样用的. 首先在UI层安装Install Castle.Windsor 在App_Start中增加一个类WindsorActivator,用于注册和销毁 ...
- lucene源码分析(6)Query分析
查询的入口 /** Lower-level search API. * * <p>{@link LeafCollector#collect(int)} is called for ever ...
- [BZOJ 5074]小B的数字
Description 题库链接 给你一个长度为 \(n\) 的序列 \(a_1,a_2,\cdots,a_n\) ,让你生成另一个序列 \(b_1,b_2,\cdots,b_n\) ,使得 \(\f ...
- Node.js文件操作一
Node.js和其他语言一样,也有文件操作.先不说node.js中的文件操作,其他语言的文件操作一般也都是有打开.关闭.读.写.文件信息.新建删除目录.删除文件.检测文件路径等.在node.js中也是 ...
- 域名(Domain Name)
是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域). 域名是一个IP地址 ...
- C学习笔记(2)--指针
一.多文件结构总结 1.子源文件里面包含自己对应的头文件 2.无论是何源文件调用库函数,都需要包含该库函数的声明所在的头文件 3.头文件又叫接口文件,.c对数据和函数进行封装和包含, .h就是.c对外 ...
- gRPC 的 RoadMap 20151022 更新
gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发 ...