更改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:作 ...
随机推荐
- Go 单元测试、基准测试、并发基准测试
一.单元测试 要开始一个单元测试,需要准备一个 go 源码文件,在命名文件时需要让文件必须以_test结尾. 单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀,例如: fu ...
- unity简单动画实现
1:创建一个Sprite Render (player)的动画对象并添加脚本Player,点击主菜单“Window(视窗)→Animation(动画窗口)”Animation面板(选中需要动画的对象) ...
- python单链表
#!/usr/bin/env python3 # -*- coding:utf-8 -*- class LNode: """ 结点类 """ ...
- Dev中控件的js事件代码放在form标签中存在问题
Dev中控件的js事件代码放在form标签中会获取不到(head标签中有其他js代码,未验证是否是这个问题)
- plupload如何删除一条数据
FilesRemoved用了发现不成功,删除图片这么重要怎能如此 看到老外提的另一个问题发现这个问题解决办法,特此备注以供不会的童鞋参考 uploader.bind('FilesAdded', fun ...
- IDEA 2019注册码
N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLCJhc3NpZ25lZU5hbWUiO ...
- An internal error occurred during: "Updating status for Tomcat v7.0 Server at localhost..."
tomcat启动maven工程的时候提示如下错误信息: An internal error occurred during: "Updating status for Tomcat v7.0 ...
- DDD Quickly - 读书笔记
读后感:关于领域驱动设计,过去多多少少用到一些.所以,这本精简版看起来很快,很多概念很熟悉,它帮助我把散乱的知识串起来.最后,Eric Evans谈到一点,本来软件的发展是向着处理复杂的业务逻辑走的, ...
- CSS相对定位|绝对定位(五)之z-index篇——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1855 补充于2016 ...
- 传统javabean与spring中的bean的区别
javabean已经没人用了 springbean可以说是javabean的发展, 但已经完全不是一回事儿了 用处不同:传统javabean更多地作为值传递参数,而spring中的bean用处几乎无处 ...