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

 全系列转自:51CTO -》jimshu

http://jimshu.blog.51cto.com

目录及原本连接如下:

教你管理SQL实例(1)数据库实例

教你管理SQL实例(2)服务启动帐户

教你管理SQL实例(3)查看启动日志

教你管理SQL实例(4)查看版本号

教你管理SQL实例(5)两大管理利器

教你管理SQL实例(6)服务器排序规则

教你管理SQL实例(7)配置外围应用

教你管理SQL实例(8)身份验证模式

教你管理SQL实例(9)服务器角色

教你管理SQL实例(10)网络协议

教你管理SQL实例(11)TCP/IP协议

教你管理SQL实例(12)客户端驱动程序

教你管理SQL实例(13)客户端协议

教你管理SQL实例(14)升级实例

教你管理SQL实例(15)多实例并存

 

正文及精品评论:

(1)数据库实例

一、数据库引擎
  数据库引擎是SQL Server的核心服务。利用数据库引擎,可创建用于联机事务处理(OLTP)或联机分析处理(OLAP)的关系型数据库,并且存储、处理和保护数据库中的数据。
  数据库引擎不是SQL Server的唯一功能。SQL Server一共提供4个服务。
  SQL Server 7.0 版引入了 OLAP 服务,SQL Server 2000 称为分析服务(SSAS)。
  SQL Server 2000 可以从官网下载并安装一个报表插件,SQL Server 2005 将其集成在安装光盘上,正式称为报表服务(***S)。
  SQL Server 2005 用集成服务(SSIS)替换了之前的 DTS。
  如下图所示。

  

 

 

二、实例
  SQL Server 实例是一个容器。每个实例都包含了自己独立的一套数据库引擎、分析服务、报表服务、SQL Server Agent、帐户(安全凭据)、Windows 服务以及其它SQL Server对象。

  SQL Server 2008最多允许在一台机器上安装50个实例。在一台机器上安装多个实例,一般的应用场景有:
(1)不同的实例对应不同的运行质量(例如响应时间、无故障时间)。
(2)不同的实例对应不同的SQL Server版本。在版本升级时常用这种方式。
(3)有不同的数据库管理员,只允许他们访问其中部分的数据库。
(4)不同的实例对应不同的配置选项。

  实例分为两类:
(1)默认实例
  在安装SQL Server时,可以选择一个默认实例,同时此实例的名称被自动命名为MSSQLSERVER。一台机器上可以没有默认实例,最多也只能有一个默认实例。客户端连接到一个默认实例时,只需要指定安装这个实例的机器的名称。
(2)命名实例
  除了默认实例,其它的实例都是命名实例,在安装时必须给它指定一个实例名称。如果这台机器上没有默认实例,那么最多可以安装50个命名实例;如果已经有一个默认实例,则最多可以安装49个命名实例。客户端连接到一个命名实例时,要使用机器名与实例名的组合,例如<McahineName>\<InstanceName>

  

问:实例ID和实例Name有什么不同?

答:

  默认情况下,实例名称用作实例 ID。这用于标识 SQL Server 实例的安装目录和注册表项。默认实例和命名实例的默认方式都是如此。
对于默认实例,实例名称和实例 ID 为 MSSQLSERVER。若要使用非默认的实例 ID,请在“实例 ID”字段中指定它。

  为了隔离每个组件的安装位置,SQL Server 安装过程中,将为给定 SQL Server 实例中的每个组件都生成一个唯一的实例 ID。
  默认 SQL Server 2008 R2 实例,默认的实例 ID为 MSSQL10_50.MSSQLSERVER。名为“MyInstance”的 SQL Server 2008 R2 命名实例,默认的实例 ID为 MSSQL10_50.MyInstance。注册表配置单元为 HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL10_50.MyInstance

SSAS 是唯一的在安装后支持实例重命名的 SQL Server 组件。如果重命名 Analysis Services 实例,实例 ID 不会发生变化。重命名实例后,目录和注册表项将继续使用在安装期间创建的实例 ID。

 

 

 

(2)服务启动账户

一、SQL Server 服务启动帐户 
  所有的核心SQL Server组件都以服务的形式运行。
  可以使用以下几类帐户:
(1)Domain User,即域帐户
  如果服务必须与网络服务进行交互,则访问类似于文件共享的域资源;如果服务使用到运行 SQL Server 的其他计算机的链接服务器连接,则可以使用具有最低特权的域帐户。许多服务器到服务器的活动只能使用域用户帐户来执行。此帐户应由域管理员在您的环境内预先创建。

(2)本地计算机的帐户
  如果计算机不在域中,则建议您使用不具有 Windows 管理员权限的本地用户帐户。

(3)Local Service 帐户
  Local Service 帐户是一个内置帐户,与 Users 组的成员具有相同级别的资源和对象访问权限。如果有个别服务或进程的安全性受到威胁,则此有限访问权限有助于保护系统的安全性。以 Local Service 帐户身份运行的服务将以一个没有凭据的 Null 会话形式访问网络资源。该帐户的实际名称为“NT AUTHORITY\LOCAL SERVICE”。

(4)Network Service 帐户
  Network Service 帐户是一个内置帐户,比 Users 组的成员拥有更多的对资源和对象的访问权限。以 Network Service 帐户身份运行的服务将使用计算机帐户的凭据访问网络资源。该帐户的实际名称为“NT AUTHORITY\NETWORK SERVICE”。

(5)Local System 帐户
  Local System 是一个具有高特权的内置帐户。它对本地系统拥有许多权限并作为网络上的计算机。该帐户的实际名称为“NT AUTHORITY\SYSTEM”。

二、修改服务启动帐户
  使用 SQL Server 配置管理器(SSCM)可更改 SQL Server 服务的启动选项,以及更改由 SQL Server 数据库引擎、SQL Server Agent、SQL Server Browser、SQL Server Analysis Services 和 SQL Server Integration Services 使用的服务帐户。
  更改数据库引擎和 SQL Server Agent 的服务启动帐户后,必须重新启动 SQL Server 服务(数据库引擎)才能使更改生效。重新启动此服务时,所有与 SQL Server 实例关联的数据库在此服务成功重新启动后才能使用。

 

  个人见解:这些账户在安装的时候就也可以设置。

注意:
  请使用 SQL Server 工具(例如 SQL Server 配置管理器)来更改 SQL Server 或 SQL Server 代理服务使用的帐户,或更改帐户的密码。
  除了更改帐户名以外,SQL Server 配置管理器还可以执行其他配置,例如在 Windows 注册表中设置权限,以使新的帐户可以读取 SQL Server 设置。其他工具(例如 Windows 服务控制管理器)可以更改帐户名,但不能更改关联的设置。如果服务不能访问注册表的 SQL Server 部分,该服务可能无法正确启动。
  因此,即使在Windows操作系统的“服务”窗口可以修改SQL Server服务启动帐户,我们强烈不推荐

  

  建议用一个最小权限的专用帐户用来启动SQL Server。
  可是,对于菜鸟来说,用本机管理员或域管理员帐户来启动SQL Server,是最直接、最简单的。

  问:在windows services下打开sql server服务和在ssmc下打开sql server服务有什么区别?

  答:最好用ssmc来开关sql server服务,原因如上面标红字体所属,是因为ssmc可以把sql server相关设置与windows设置都组织配合设置好。

 

 

 

(3)查看启动日志

一、基本参数
  SQL Server引擎的启动选项默认使用3个基本参数。
(1) -d
  指定了 master 数据库的数据文件的完全限定路径。通常为 C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\maste.mdf 。

(2) -e
  指定了错误日志文件的完全限定路径。通常为 C:\Program Files\Micorosft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG 。

(3) -l
  指定了 master 数据库的日志文件的完全限定路径。通常为 C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data\mastlog.ldf 。


二、设置启动选项
  安装SQL Server时,安装程序将把一组默认的启动选项写入Windows注册表。如果没有在启动选项中提供上述3个参数,则使用现有的注册表参数。
  可以使用 SQL Server 配置管理器设置启动选项。SQL Server 2012 与前面的版本稍有差异。        

sql 2012更简洁

三、查看错误日志文件  每次启动 SQL Server 时,都会循环错误日志扩展编号:将当前错误日志重命名为 errorlog.1;errorlog.1 变为 errorlog.2,errorlog.2 变为 errorlog.3,依次类推。最后生成一个新的ERRORLOG 文件。
  当发现SQL Server数据库引擎无法启动,应当首先检查错误日志文件。
  如果SQL Server实例已经启动,则可以通过系统存储过程 sp_readerrorlog 查看错误日志文件。
  错误日志文件示例如下:


代码:

2013-08-05 21:05:08.70 Server      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
Apr  2 2010 15:48:46 
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
2013-08-05 21:05:08.74 Server      (c) Microsoft Corporation.
2013-08-05 21:05:08.74 Server      All rights reserved.
2013-08-05 21:05:08.74 Server      Server process ID is 2560.
2013-08-05 21:05:08.74 Server      System Manufacturer: 'Dell Inc.', System Model: 'PowerEdge R510'.
2013-08-05 21:05:08.74 Server      Authentication mode is MIXED.
2013-08-05 21:05:08.75 Server      Logging SQL Server messages in file 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG'.
2013-08-05 21:05:08.76 Server      This instance of SQL Server last reported using a process ID of 2572 at 8/5/2013 9:02:22 PM (local) 8/5/2013 1:02:22 PM (UTC). This is an informational message only; no user action is required.
2013-08-05 21:05:08.76 Server      Registry startup parameters: 
  -d D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\master.mdf
  -e D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG
  -l D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
2013-08-05 21:05:08.82 Server      SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.
2013-08-05 21:05:08.83 Server      Detected 24 CPUs. This is an informational message; no user action is required.

 

 问:如何读取错误日志?

 答:

在ssms中查看

  

用命令查看

 exec sp_readerrorlog 

 

问:如果 ERRORLOG 太多,想要截断,怎么办?

【1】DBCC ERRORLOG 

【2】sp_cycle_errorlog 关闭当前的错误日志文件,并循环错误日志扩展编号(就像重新启动服务器)。
可使您循环访问错误日志文件,而不必停止和启动服务器。 新错误日志包含版本和版权信息,以及表明新日志已创建的一行。

 

 

 

 

(4)查看版本号

在谈论“版本”时会用到2个英文单词:version 和 edition 。version 指的是软件的升级“版本” ,如10.0版、10.50 版或者 2008版、2012版。edition 指的是面向不同层次用户的发行“版本”, 如标准版(standard edition) 、企业版(enterprise edition)。

一、version
  最近的几个升级版本:
(1)SQL Server 7.0 。这个版本基本上重新设计了系统内核,并增加了易用的图形管理界面。
(2)SQL Server 2000 。这个版本的version是8.0。
(3)SQL Server 2005 。这个版本的version是9.0。这个版本也是重新设计了系统内核。某些旧的版本需要先升级到SQL Server 2005,然后才可以升级到更新的版本。
(4)SQL Server 2008。这个版本的version是10.0。
(5)SQL Server 2008 R2。这个版本的version是10.50。R2表示这是一个次版本,比10.0版本变化不大,主要针对Windows Server 2008做了一些优化。这是SQL Server最成功的一个版本,也是最受用户欢迎的版本。
(6)SQL Server 2012。这个版本的version是11.0。

二、edition
  edition针对不同层次的用户,发行时对部分功能做了一些技术限制。其中主要的发行版本被称为“核心版本”。
1. 核心版本
  SQL Server 2008 的核心版本分为标准版和企业版。
  SQL Server 2008 R2 的核心版本分为标准版、企业版、数据中心版。实际上是将上一个版本的企业版做了分拆。
  SQL Server 2012 的核心版本分为标准版、BI版(商业智能版)和企业版。
  企业版(或数据中心版)是最高端的版本,没有任何技术限制,适用于数据量大、并发用户多的高强度运营环境。标准版只提供基本的功能,适用于数据量小、并发用户少的普通运营环境。如果以处理器数量(物理CPU的数量)或core数量来购买,这两个版本的价格大约相差6倍。

2. 非核心版本
  评估版可以直接从官网下载,180天后过期。
  开发版包含了所有的功能,但只能用于单机的开发环境,不允许用于正式的生产环境。
  Express版是一个轻量级的免费版本,但有非常多的功能限制,例如数据库不能超过10GB,甚至默认的发行版本中没有图形管理界面。
  还有其它一些非核心版本,例如Small Business、Compact等。

3. 切换edition
  对于已经安装的edition,可以通过安装光盘的“版本升级”功能,输入相应的序列号,修改成另一个edition

三、查看版本号

1.SSMS

  

 

2.使用T-SQL

1. T-SQL语句

1 select @@version

 

select @@version
select serverproperty(...) --参数见帮助

查询的结果示例如下:

express edition有3个子版本:

 

(1) SQL Server Express: 最基本的功能,没有图形管理界面SSMS

(2) SQL Server Express with Tools 包括 SQL Server Express 和 SQL Server Management Studio Express

(3) SQL Server Express with Advanced Services 包括图形管理工具 SQL Server Management Studio (SMSS) Express、强大的报表功能(SQL Server Reporting Services)以及基于文本的高级搜索功能。

 

 

 

(5)两大管理利器(ssms,sscm)

SQL Server自带了两大管理利器。这两个工具都可以通过“开始”菜单访问。
一、SQL Server 配置管理器(SSCM)
  SQL Server 配置管理器负责管理SQL Server的服务和协议。它可以执行以下主要任务:
(1)启动、停止、暂停和重新启动服务。
(2)更改服务帐户和服务帐户密码。更改服务帐户的密码后,不必重新启动SQL Server实例就可以使新的身份凭据设置生效。
(3)配置服务的启动模式、启动参数。
(4)配置服务器端的网络协议与参数。
(5)配置客户连接所用的通信协议。
  这个工具实际上是MMC(Microsoft管理控制台)的一个管理单元,而不是一个单独的程序。因此,在Windows 8 环境,在应用程序中找不到SSCM。请在“搜索”超级按钮中的“应用程序”下键入SQLServerManagerXX.msc(XX表示version,例如SQL Server 2008为10,SQL Server 2012为11),然后按回车键。

二、SQL Server Management Studio(SSMS)
  SQL Server Management Studio 是用于管理实例的主要工具。它是一个集成环境,用于访问、配置和开发SQL Server的所有组件。它组合了大量图形工具和丰富的脚本编辑器,使用各种技术水平的开发人员和管理员都能访问SQL Server。
  在SQL Server 2005之前,SQL Server 内置的工具有企业管理器、查询分析器、Analysis Manager。SSMS 不仅将旧版本的上述功能整合到单一的环境中,还可以和SQL Server 的其它组件(例如***S、SSIS)协同工作。开发人员可以获得熟悉的体验,而数据库管理员可以获得功能齐全的单一实用工具,其中包含易于使用的图形工具和丰富的脚本撰写功能。
  SSMS是建立在Visual Studio 隔离的shell上,该shell 本身就支持扩展性(外接程序、插件)。可以在第三方和技术社区找到一些扩展插件。
  可以使用SSMS建立到本地或远程SQL Server 的连接,来管理本地或远程的实例。

SSMS连接到实例.png

 

 

 

(6)服务器排序规则

一、排序规则的概念
  SQL Server能存储许多种世界上的书写语言中使用的文字。然尔,并非每一种语言都遵循相同的排序或数据比较规则。排序规则(collation sequence)控制着SQL Server在执行存储、检索、排序和比较操作时如何对待字符数据。
  排序规则定义了支持的字符集,包括是否区分大小写、重音及假名。例如,英文版SQL Server默认的排序规则是SQL_Latin1_General_CP1_CI_AS,那么获得的就是对西欧字符集的支持,它不区分大小写(case-insensitive),对重音敏感(accent-sensitive)。执行排序操作时,不区分大小写,则会将e和E看成是相同的字符;区分重音,则会将E、È、É、Ê、Ë看成不同的字符。
  中文版SQL Server的默认排序规则是Chinese_PRC_CI_AS,表示针对大陆简体字Unicode排序,不区分大小写,但对重音敏感。

二、安装SQL Server时指定排序规则
  服务器(实例)的排序规则,在安装SQL Server时就需要指定。在安装时,将指定所有数据库、表和列使用的一个默认排序规则。在安装完成后,可以在每个级别上覆盖默认的排序规则,将在后续内容中详细讲解。

三、查看服务器(实例)的排序规则
  可以通过SSMS查看当前服务器(实例)的排序规则。

  

安装数据库时的选择

  

 

 

 

 

(7)配置外围应用

只要有足够的时间,任何人最终都能突破任何安全机制。安全机制的目标是提供足够多的障碍,使***一个系统的投入超过回报。配置SQL Server外围应用的目的,是尽可能使SQL Server启用的功能减小到最小程度,尽量减少***点的数量。
外围应用主要有两类,一类是针对连接,另一类是针对功能。SQL Server 2005提供了专门的图形化界面。

在sql 2005中,打开方式为开始-》所有程序-》找到sql server2005-》配置工具-》sql server外围应用配置器

  

  

 

 

 SQL Server 2008删除了“SQL Server 2005外围应用配置器”图形化界面,并把相关数据查看嵌入到ssms新功能-》方面。右击实例,方面即可查看。

官方的解释为:
1. 针对服务和连接的配置,已经集成在SQL Server配置管理器(SSCM)。
2. 针对功能的配置,只可以使用sp_configure脚本。

三、使用sp_configure
1. 开启高级选项
默认情况下,sp_configure只可以查看和修改当前实例的基本选项。使用以下脚本,开启高级选项。

1 EXEC sp_configure 'show advanced options',1
2 GO
3 RECONFIGURE WITH OVERRIDE
4 GO
5 EXEC sp_configure
6 GO

2. 打开或关闭某选项
例如,打开CLR功能、禁用OLE automation procedures功能。

1 EXEC sp_configure 'clr enabled',1
2 EXEC sp_configure 'Ole Automation Procedures',0
3 GO
4 RECONFIGURE WITH OVERRIDE
5 GO

  

 

四、关于部分功能的说明
1、OLE Automation
  此过程提供与之前版本的一些基本交互功能。SQL Server 2005推荐使用CLR(公共语言运行时)。两者的主要区别在于:CLR例程是在一个受保护的内存空间中运行,不会破坏SQL Server内存栈,而OLE Automation就可能造成这个破坏。
  旧版本的任何应用程序如果需要使用OLE Automation服务,就应该使用VB .net或C#进行重写。

2. SQL Mail XPs
  此功能是为了向后兼容。推荐使用database mail(数据库邮件)。

3. CDOC(cross db ownership chaining,跨数据库所有权链)
  此功能允许在数据库之间转移所有权。一经启用,数据库的所有者相当于放弃控制权,把它移交给另一个数据库的所有者。
4、即席分布式查询(Ad Hoc Distributed Queries)
  OpenRowset和OpenDatasource允许在代码中嵌入安全凭据,从而在SQL Server中发起到另一个实例的连接,这会造成潜在的风险。只有当应用程序和脚本调用这些函数时,才启用“即席分布式查询”功能。推荐使用链接服务器。


5. xp_cmdshell
  这是一个扩展存储过程,允许从数据库引擎内运行操作系统命令。由于此功能启用后,可以执行任何操作系统命令,一旦SQL Server管理员帐号被攻破,那么***者就可以利用xp_cmdshell执行操作系统命令,例如:创建系统管理员等。
 
 
 
 
 
 
 
 
(8)身份验证模式
一、身份验证模式(Authenticate mode)
  身份验证模式也就是用户登录方式,这是SQL Server实施安全性的第一步,用户只有登录到服务器之后才能对数据库系统进行管理。
  SQL Server和身份验证模式有两个选项:
(1)集成安全性(Windows身份验证模式)
  在此模式时,只能使用Windows帐户登录SQL Server实例。这是默认的身份验证模式。
  一般情况下,SQL Server实例都运行在Windows服务器上,Windows本身就提供帐户的管理和验证功能。此模式时,允许SQL Server使用Windows的用户名和密码,并将登录验证的任务交给Windows操作系统,用户只要通过了Windows的身份验证,就可以连接到SQL Server实例(如果有权限的话)。

(2)混合模式(SQL Server和Windows身份验证模式)
  在此模式时,既能使用Windows帐户也能使用SQL Server创建的帐户来登录SQL Server实例。
  使用混合模式登录时,可以同时使用Windows身份验证和SQL Server身份验证。
  在使用SQL Server身份验证时,用户需要使用SQL Server帐户连接到实例。对于SQL Server 2012,除了旧版本的帐户类型,还可以为某些“包含数据库”创建一种“带密码的SQL用户”(此类帐户仅可用于连接该数据库)。
 

二、设置身份验证模式1. 安装时指定身份验证模式  

在安装SQL Server时,需要指定身份验证模式。

  

 

2. 通过SSMS修改身份验证模式
  通过SSMS可以修改身份验证模式,修改后需要重启该实例才会生效。

  

三、新建登录名
  创建登录用户可以用SSMS,也可以用T-SQL脚本。
1. 创建Windows登录帐户
  首先通过Windows的管理工具创建帐户,然后在SSMS中通过“新建登录名”将此Windows帐户添加到SQL Server登录列表。单击“登录名”旁边的“搜索”按钮可打开一个对话框,以查找 Windows 用户。

2. 创建SQL Server登录帐户
  不需要事先创建Windows帐户,而是直接创建一个SQL Server用户帐户。
  SQL Server 身份验证使用存储在数据库中的密码。如果身份验证模式设为“混合模式”,则此SQL Server登录帐户在创建后可立即使用。如果身份验证模式设为“集成模式”,则SQL Server登录帐户无效。
  

 


  如果是SQL Server登录帐户,则要注意密码策略的3个选项:
(1)强制实施密码策略。将对此登录帐户强制实施密码策略,对在 SQL Server 内部使用的密码应用在 Windows Server 2003(或更高版本中)中使用的相同复杂性策略和过期策略。如果选择 SQL Server 身份验证,这将是默认设置。关闭此选项可能会造成安全风险。
(2)强制密码过期。将对此登录帐户强制实施密码过期策略,系统将提醒用户更改旧密码,并禁用带有过期密码的帐户。必须选择“强制实施密码策略”才能启用此复选框。
(3)用户在下次登录时必须更改密码。首次使用新登录名时,SQL Server 将提示用户输入新密码。必须选择“强制实施密码策略”才能启用此复选框。

 四、“Windows 组”帐户
  可以将Windows组帐户作为登录名。
  此功能默认是关闭的,需要手动勾选“组”选项。

    

1. SQL Server的安全策略比较简陋,比不上Windows。
2. 不是所有的Windows用户都可以访问SQL Server,还得在SQL Server为授权用户添加登录名(或添加一个Windows安全组)。

 

 

 

 

(9)服务器角色

一、服务器级别角色
  为便于管理服务器(实例)上的权限,SQL Server 提供了若干“角色”,这些角色是用于分组其他主体的安全主体。“角色”类似于 Microsoft Windows 操作系统中的“组”。服务器级角色的权限作用域为服务器范围。
  您可以将服务器级主体(SQL Server 登录名、Windows 帐户和 Windows 组)添加到服务器级角色。 固定服务器角色的每个成员都可以将其他登录名添加到该同一角色。 用户定义的服务器角色的成员则无法将其他服务器主体添加到角色。

二、固定服务器角色
  SQL Server 提供了9种固定服务器角色。无法更改授予固定服务器角色的权限。
(1)bulkadmin 
  bulkadmin 固定服务器角色的成员可以运行 BULK INSERT 语句。

(2)dbcreator 
  dbcreator 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。

(3)diskadmin 
  diskadmin 固定服务器角色的成员可以管理磁盘文件。

(4)processadmin 
  processadmin 固定服务器角色的成员可以终止在数据库引擎实例中运行的进程。

(5)securityadmin 
  securityadmin 固定服务器角色的成员可以管理登录名及其属性。他们可以 GRANT、DENY 和 REVOKE 服务器级别的权限。他们还可以 GRANT、DENY 和 REVOKE 数据库级别的权限。此外,他们还可以重置 SQL Server 登录名的密码。

(6)serveradmin 
  serveradmin 固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。

(7)setupadmin 
  setupadmin 固定服务器角色成员可以添加和删除链接服务器,并可以执行某些系统存储过程。

(8)sysadmin 
  sysadmin 固定服务器角色的成员可以在数据库引擎中执行任何活动。默认情况下,Windows BUILTIN\Administrators 组(本地管理员组)的所有成员都是 sysadmin 固定服务器角色的成员。

(9)public
  每个 SQL Server 登录名均属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。当您希望该对象对所有用户可用时,只需对任何对象分配 public 权限即可。 您无法更改 public 中的成员关系。
  注意:public 的实现方式与其他角色不同。 但是,可以从 public 授予、拒绝或撤销权限。

SSMS查看

  

三、自定义服务器角色
  从 SQL Server 2012 开始,您可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色。

  

 

 

 

 

(10)网络协议

一、网络协议概述
  服务器可以同时监听或监视多个网络协议。 但必须对每个协议都进行配置。 如果没有配置某个协议,则服务器将无法监听该协议。 安装完成后,可以使用 SQL Server 配置管理器更改这些协议配置。
  如果启用或禁用网络协议,或者修改了网络协议的配置,必须重新启动 SQL Server 实例才能生效。

二、SQL Server 网络配置
  SQL Server 2008 支持以下四种协议:
 

(1)Shared Memory
  Shared Memory 是可供使用的最简单协议,没有可配置的设置。它是一个用于Windows Server内部通信的由进程共享内存的空间。使用 Shared Memory 协议的客户端仅可以连接到本机运行的 SQL Server 实例。
  如果怀疑其它协议配置有误,请禁用除 Shared Memory 以外的其它所有协议,以进行故障排除。

(2)Named Pipes
  Named Pipes协议使用进程间通信信道进行高效的服务器内部通信和局域网通信。它的运行模式是内存的一部分被某个进程用来向另一个进程传递信息。因此,一个进程的输出就是另一个进程的输入。第二个进程可以是本地的,也可以是远程的。
  但由于通过网络或防火墙连接时Named Pipes需要过多的开销,而且它还要求打开额外的端口445,所以一般来说最好禁用Named Pipes。
  然而有许多应用程序需要用到Named Pipes协议,因为他们是围绕NetbBIOS或给予LAN的协议设计的。Named Pipes可以轻松访问单个安全域中的远程过程调用,因而对这些应用程序很有帮助。如果您需要支持这些应用程序,而SQL Server并没有暴露给外部通信量,那么启用Named Pipes协议和相应的端点的风险是最小的。
   默认情况下,SQL Server 侦听:\\.\pipe\sql\query(对于默认实例)和 \\.\pipe\MSSQL$<instancename>\sql\query(对于命名实例)。此字段最多允许 2047 个字符。
   

(3)TCP/IP

  TCP/IP是大部分SQL Server客户端访问时的主要网络协议。

(4)VIA
  Virtual Interface Adapter协议与支持的硬件和网络配置一起使用。虚拟接口体系由HP、Intel 和 Microsoft 联合开发,被设计成一个可减少网络协议的开销的高性能协议,该协议在用户模式上下文而非内核模式上下文下运行。

三、SQL Server 2012的变化
  SQL Server 2012不支持VIA协议。

四、防火墙端口
  配置了SQL Server使用的网络协议之后,还要打开防火墙的相应端口,客户端才能访问SQL Server实例。


注意:从Windows Server 2008和Windows Vista开始,Windows的安全策略有重大变化,在安装SQL Server时不会自动打开防火墙的相应端口,仅有一个警告信息。

  

 

关于防火墙的配置,请参考 http://jimshu.blog.51cto.com/3171847/590411

楼层总结:

1、使用 Shared Memory 协议的客户端仅可以连接到本机运行的 SQL Server 实例。
2、如果启用或禁用网络协议,或者修改了网络协议的配置,必须重新启动 SQL Server 实例才能生效。
3、如果怀疑其它协议配置有误,请禁用除 Shared Memory 以外的其它所有协议,以进行故障排除。
4、SQL Server 2012不支持VIA协议。
5、推荐使用TCP/IP协议。
      默认情况下,Shared Memory是开放的。有时候,本机可以连接到SQL Server实例,而远程客户端却连不上实例,就要检查:
        1、防火墙
        2、TCP/IP协议的配置

 

 

 

 

 

(11)TCP/IP 协议

一、配置 SQL Server 实例的 TCP/IP 协议
  可以使用SQL Server配置管理器来配置实例的TCP/IP协议。配置完成后,重启实例后才生效。

1. “协议”选项卡
 

(1)保持活动状态
  指定传输保持活动状态的数据包的时间间隔(毫秒),以检查位于连接远端的计算机是否仍可用。

(2)全部侦听
  指定 SQL Server 是否侦听所有绑定到计算机网卡的 IP 地址。如果设置为“否”,则使用每个 IP 地址各自的属性对话框对各个 IP 地址进行配置。如果设置为“是”,则 IPAll 属性框的设置将应用于所有 IP 地址。默认值为“是”。

(3)已启用
  如果设置为“是”,则启用TCP/IP协议。


2. “IP地址”选项卡
  如果“协议”选项卡中的“全部侦听”为“否”,则每个IP地址可以有各自的属性。如果“已启用”设置为“否”,则该网卡被禁止侦听TCP/IP连接请求。
  如果“协议”选项卡中已经设定了“全部侦听”,则“IP地址”选项卡只有“IPALL”属性框的设置有效。

二、静态端口和动态端口
(1)静态端口

  SQL Server 的默认实例侦听端口 1433 的传入连接。可以出于安全性原因或根据客户端应用程序的请求来更改该端口。若要配置静态端口,请将“TCP 动态端口”框保留为空,并在“TCP 端口”框中提供一个可用的端口号。

注意:SQL Server 数据库引擎可以侦听同一 IP 地址的多个端口,端口以逗号分隔的格式列出:1433,1500,1501。本字段最多允许 2047 个字符。
若要配置单个 IP 地址以侦听多个端口,还必须将“TCP/IP 属性”对话框的“协议”选项卡上的“全部侦听”参数设置为“否”。

注意:SQL Server 配置管理器显示安装 SQL Server 时可用的 IP 地址。如果 IP 地址发生变化(添加或删除网卡、DHCP 的 IP 地址过期等),请编辑“IP 地址”框,然后重新启动 SQL Server。


(2)动态端口
  默认情况下,命名实例(例如 \SQLExpress)被配置为侦听动态端口。若要配置动态端口,请将“TCP 动态端口”框中输入0。

  如果某个 SQL Server 实例已配置为侦听动态端口,则在启动时,该实例将检查操作系统中的可用端口,并为该端口打开一个端点。配置的端口将记录在当前 SQL Server 启动日志文件中。
  客户端连接必须指定要连接的端口号。使用动态端口会增加通过防火墙连接 SQL Server 的复杂性,因为重新启动 SQL Server 时端口号可能会改变,从而需要更改防火墙设置。若要避免通过防火墙连接的问题,请将 SQL Server 配置为使用静态端口。

三、SQL Server Browser
  由于每次启动 SQL Server 时端口号都可能会改变,因此 SQL Server 提供 SQL Server Browser 服务监视端口,并将客户端连接指向该实例的当前端口。
  SQL Server Browser 服务 (sqlbrowser) 为数据库引擎和 SSAS 的每个实例提供实例名称和版本号。SQL Server Browser 随 SQL Server 一起安装,为该计算机上运行的早期版本的 SQL Server(从 SQL Server 7.0 开始)提供此服务。

注意:请为防火墙打开 UDP 1434 端口,SQL Server Browser 通过此端口侦听客户端的传入请求。

技术背景:在 SQL Server 2000 之前,一台计算机上只能安装一个 SQL Server 实例。SQL Server 侦听 1433 端口传入的请求,此端口由官方的 Internet 号码分配机构 (IANA) 分配给 SQL Server。只有一个 SQL Server 实例可以使用端口,因此当 SQL Server 2000 引入对 SQL Server 多个实例的支持时,便开发了 SQL Server 解析协议 (***P),用于侦听 UDP 1434 端口。此侦听器服务用已安装的实例的名称以及实例使用的端口或命名管道来响应客户端请求。为了解决 ***P 系统的限制,SQL Server 2005 引入了 SQL Server Browser 服务来替换 ***P。

SQL Server Browser.png

 

 

 

 

(12)客户端驱动程序

一、ODBC配置
1. 默认的ODBC工具
  在“管理工具”中有一个“数据源(ODBC)”,可以用来配置本机的ODBC。
 

2. 32位专用ODBC工具
  如果本机是64位操作系统,而应用程序需要使用32位的ODBC配置和驱动程序,则可以找到Windows系统文件夹(例如 C:\Windows),打开下面的 SysWOW64 文件夹,运行 odbcad32.exe 程序。


二、SQL Server客户端驱动程序
1、MDAC
  Microsoft Data Access Components 是 Windows 操作系统开发组提供的一套组件,随Windows一同安装。它包含一系列的DLL和相关的组件资源,其中包括 Open Database Connectivity (ODBC)、OLE DB、Microsoft ActiveX Data Objects (ADO)、Microsoft Remote Data Service (RDS) 等。其中,可以用于访问SQL Server的组件是SQL Server OLE DB Provider。
  SQL Server 2000 要求 MDAC 2.6。从 Windows Vista 和 Windows Server 2008 开始,版本号改为 6.0 以上。可以在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataAccess 查看。

2、SQL Native Client
  从SQL Server 2005开始,SQL Server开发组不再捆绑使用Windows自带的MDAC,而是提供专门的驱动程序 SQL Native Client。不同的后续版本,对应不同的驱动程序。

  • SQL Server 2005  对应 SQL Native Client 9.0;
  • SQL Server 2008 和 SQL Server 2008 R2  对应 SQL Native Client 10.0;
  • SQL Server 2012  对应 SQL Native Client 11.0。
三、安装 SQL Native Client
(1)集成安装

  在安装 SQL Server 或 SQL Server 工具时,将同时安装对应版本的 Microsoft SQL Server Native Client 。 
   

 



(2)下载安装
  还可以从 SQL Server 功能包的下载网页获取 sqlncli.msi。 如果本机上还安装了以前的 SQL Server Native Client 版本,可以与早期版本并行安装。SQL Server 2008 R2 SP2功能包的下载地址: http://www.microsoft.com/zh-cn/download/details.aspx?id=30440
X64对应的安装程序是sqlncli_amd64.msi ,X86对应的安装程序是 sqlncli_x86.msi 。


(3)其它
  还可以在 SQL Server 安装磁盘的 Setup 文件夹找到名为 sqlncli.msi 的安装包。例如,SQL Server 2008 R2安装光盘的 \2052_CHS_LP\x86\Setup\x86 和 \2052_CHS_LP\x64\Setup\x64 就分别有相应平台的安装程序。
 

PS:SQL Native Client是从SQL Server 2005开始使用的。但是有些古老的应用程序仍然使用MDAC。
例如,在Windows 7上面安装一些应用程序,却要检查是否有MDAC 2.6的版本,结果发现Windows 7注册表显示是6.0,反而会报错。有时候为了应付,只好把Windows 7注册表临时改为2.6。

 

 

 

 

(13)客户端协议

一、客户端协议
  首先要注意:这里的客户端协议,是指本机作为客户端去连接远程或本地SQL Server所用的协议。如果本机是64位操作系统,还将同时提供64位和32位的配置选项。
  SQL Native Client支持同样的四种服务器端协议。
 

  除了配置客户端协议之外,还可以设置协议的绑定顺序。
 


二、设置TCP/IP本地客户端配置
  TCP/IP协议是连接远程或本地SQL Server实例的首选协议。
(1)保持活动状态 
  此参数(毫秒)控制 TCP 尝试发送 KEEPALIVE 包以检查空闲连接是否仍保持原样的频率。默认值为 30000 毫秒。

(2)保持活动状态的间隔 
  此参数(毫秒)确定重新传输 KEEPALIVE 直到接收到响应的间隔。默认值为 1000 毫秒。

(3)默认端口 
  指定 TCP/IP Net-library 在尝试连接到 SQL Server 的目标实例时将使用的端口。默认值端口为 1433。

(4)启用 
  可能的值为“是”和“否”。

 


三、别名
  可以使用SQL Native Client配置节点创建别名。通过制定一个别名,不用改变服务器名称和参数就可以把客户端的请求定向到该服务器。别名也可以用来取代复杂的命名实例名称。
 

PS:“客户端协议”很容易误解。有时被理解为:这个地方配置好了,远程客户端连接进来的时候就会用到我这个地方的配置。
实际上,应该这样理解:“客户端协议”,是本机的某些应用程序(例如SSMS)作为客户端去访问本机或者远程的SQL Server时所用到的协议。

 

 

 

 

 

(14)升级实例

SQL Server 实例可以有两种方式升级。
一、就地(in-place)升级
  就地升级实际上就是覆盖旧版本的实例,最后生成新版本的实例。这种升级方式一般比较简单,大多数可以自动化升级。
  就地升级后,系统数据库也被升级,并且一般不可以回滚到旧的版本。
  由于旧版本的SQL Server 实例被覆盖,升级后生成的新版本的实例一般不需要添加额外的硬件。
  对应用程序而言,升级后的SQL Server 实例名称不变,因此应用程序无需修改。

二、背靠背(side-by-side)升级
  背靠背升级实际上就是在同一台服务器硬件上安装一个新版本的实例,然后把旧版本实例的用户数据库迁移到新实例。这种升级相对比较复杂。
  背靠背升级时,一般是在新版本的实例完全安装并启动之后,才停止旧版本的实例,然后迁移数据库。这种升级方式即可以减少停机时间,也便于用户在有必要时可以直接回滚到旧的版本。

  背靠背升级时,需要注意以下共享的组件将有以下变化:
(1)如果2个安装的主版本号一致(例如,SQL Server 2008 与 SQL Server 2008 R2),那么,共享的组件将被升级到最后的版本,即两都不能共存。
(2)安装程序支持文件可以共存(例如,SQL Server 2008 与 SQL Server 2012)。稍后你可以任意修改某一个版本安装的组件。

三、升级的注意事项
  1. 到底是使用就地升级,还是使用背靠背升级,没有对错之分。
  2. 背靠背升级由于便于回滚,通常用于测试从低版本迁移到高版本的可行性。
  3. 不是所有的 SQL Server 实例都支持背靠背升级。
  4. 由于 SQL Server 2005 基本上改写了底层架构,因此,太低的版本(例如SQL Server7.0)不能直接升级到 SQL Server 2008,而是首先需要升级到 SQL Server 2005。
  5. 不支持跨平台升级。不能将 32 位 SQL Server 实例升级到本机 64 位。
  6. SQL Server 的本地化版本不能升级到 SQL Server 2008 英文版或其它语言。
  7. 高版本SQL Server 实例的用户数据库不可以被低版本的实例附加(attach)。

四、常用实际解决方案

  这两种方法我在项目实施过程中往往都不用。
  遇到客户需要升级某个实例,我的实施方案一般都是:买一台新的机器,安装Windows,然后安装全新的SQL Server,最后把旧的实例的用户数据库附加过来。
  如果客户坚持不买新的机器,就把旧的机器format再安装Windows和SQL Server。

 

 

 

 

(15)多实例并存

一、多实例并存的技术限制
  可以在已运行 SQL Server 早期版本实例的计算机上安装 SQL Server。如果计算机上已存在默认实例,则 SQL Server 必须作为命名实例安装。
  SQL Server 2008最多允许在一台机器上安装50个实例。从理论上讲,只要硬件性能足够,就可以在一台机器上并存50个实例。

二、并行实例的原因
  在一台机器上是否并存多少个实例,没有绝对值。一般多实例并存的场景主要有以下几种:
1. 隔离不同的管理结构和安全配置
  例如,某个实例要求sa帐户,另一个实例也要求sa帐户但密码不同,另一个实例禁用sa帐户。

2. 不同的性能要求
  通过对每个实例的属性配置,或者通过资源调控器,可以为每个实例实现不同的内存、CPU、磁盘资源,从而实现不同的性能要求。

3. 不同的服务等级协议(SLA)
  不同的数据库应用程序可能需要不同的SLA,特别是关于RTO(recovery time objective)和RPO(recovery point objectives)。
  例如,客户可能需要某个实例实现7*24运行,并且要求可以恢复到最后一笔交易;对另一个实例可能只需要5*8运行,并且只要求可以恢复到备份点。

4. 不同的历史版本
  例如,可以将SQL Server 2005与SQL Server 2008安装在同一台机器上。这种场景尤其用于背靠背升级时。

5. 不同的排序规则
  例如,某个实例为SQL_Latin1_General_CP1_CI_AS(西欧字符集),另一个实例为Chinese_PRC_CI_AS(简体中文字符集)。

三、注意事项
1. 防止端口冲突
  并行安装 SQL Server 实例时,请注意避免 IP 地址上的 TCP 端口号冲突。当 数据库引擎的两个实例都配置为使用默认 TCP 端口 (1433) 时,通常会发生冲突。要避免冲突,请将一个实例配置为使用非默认的固定端口,或者使用动态端口。


2. 规划硬件负载
  同一台机器上安装了多个并行的实例,对这台机器的硬件会有较多的竞争,需要提前规划硬件负载,以及为每个实例配置不同的硬件资源。。

3. Server Core 模式
  SQL Server 2012 不能在运行 Windows Server 2008 R2 Server Core SP1 的计算机上与早期版本的 SQL Server 一起并行安装。

并行实例.png

 

posted @ 2018-08-28 20:19  郭大侠1  阅读(563)  评论(0编辑  收藏  举报