sqlServer学习笔记

------------------------安装--------------------------

 

------------------------开启服务--------------------------

未开启数据库服务,会报错:未找到或无法访问服务器!  所以打开sqlserver数据库的前提是启动该服务,且是手动启动,具体见下:

方法一: 计算机管理---->服务---->sqlserver(mssqlserver)---->启动

方法二: 安装目录---->配置工具---->sqlserver配置管理器----->服务----->sqlserver(mssqlserver)---->启动

方法三: cmd---->net start mssqlserver    //开启服务

                 ---->net stop mssqlserver    //停止服务

------------------------身份验证--------------------------

 (1)window验证   //不需要用户名和密码

(2)sql server用户验证    //需要用户名和密码----->在数据库中创建用户密码,见下:

                                                                       

数据库中创建用户密码: open数据库----->数据库服务器名(localhost)----->安全性---->登录名(创建用户,或者查看默认账号)

------------------------常见报错代码--------------------------

18456: 登录数据库,选择sqlserver验证,报错18456,无法连接到服务器;

          原因: 安装数据库时,身份验证应该选择混合模式 || 密码错误也会报这个错

          解决: window验证登录数据库, 右键服务器名---->属性---->安全性---->身份验证---->sqlserver验证和window验证

                  数据库服务器名---->重新启动--->断开连接---->连接 (这一步是重启数据库服务)

18470: 上面这个错解决后,再次选择sqlserver验证登录, 报错该账户被禁用,代码18470;

            原因: 需要启用该账户

            解决:window验证登录数据库----->数据库服务器名(localhost)----->安全性---->登录名---->该用户右键属性---->状态--->登录--->选择启用

                   数据库服务器名---->重新启动--->断开连接---->连接 (这一步是重启数据库服务)

------------------------物理存储结构--------------------------

主数据文件: .mdf    //只有一个主文件

辅助数据文件: .ndf    //可有多个辅助文件,存储主数据文件中没有的数据和数据对象

日志文件: .ldf    //只有一个日志文件, 增删改会被记录在内, 数据库损坏用此文件修复

文件组:主文件组(存放.mdf文件)和辅助文件组(存放.ndf文件), .ldf不属于任何文件组

------------------------数据库命名规则--------------------------

1) 第一个字符必须是:字母 或 _ 或 @ 或 #开头

2) 不能是sql关键字

3)不能有其他特殊字符和空格

------------------------数据库分类--------------------------

----->系统数据库

          ------>master    

          ------>model     //数据库的结构模版

          ------>msdb      //数据库代理,备份,还原

          ------>tempdb     //存放临时表,最后会清空

          ------>resource     //只读,隐藏, 在所有数据库用户sys下,存储表对象

----->用户自己创建的数据库

------------------------标识--------------------------

80: sqlserver2000

90: sqlserver2005

100: sqlserver2008

------------------------兼容|限制访问--------------------------

数据库名---->右键----->属性----->选项----->选哪个版本就会兼容哪个版本的数据库

                                                        ----->限制访问:multi-user(正常状态)/single-user(数据库维护)/restrited-user(限制用户)

                                                        ----->只读:true/false

------------------------视图创建数据库--------------------------

数据库服务器名------>数据库------>右键----->创建数据库 (主数据文件大小最小3M,否则不能创建数据库model)

------------------------sql创建数据库--------------------------

use master
go
--创建数据库
create database market
on primary( --主文件组
name='market_data',
filename='D:\Java\SQLServer2008_project\market_data.mdf',
size=5mb,
maxsize=100mb,
filegrowth=15%
),
filegroup fg( --辅助文件组
name='market2_data',
filename='D:\Java\SQLServer2008_project\market2_data.ndf',
size=3mb,
maxsize=200mb,
filegrowth=10%
)
log on( --日志
name='market_log',
filename='D:\Java\SQLServer2008_project\market_log.ldf',
size=5mb,
filegrowth=0
),(
name='market2_log',
filename='D:\Java\SQLServer2008_project\market2_log.ldf',
size=5mb,
filegrowth=0
)
go


select * from sysdatabases    --show databases;
go
--创建文件组,并添加文件
use market
alter database market add filegroup fg2
go
alter database market add file(
  name='market3_data',
  filename='D:\Java\SQLServer2008_project\market3_data.ndf',
  size=3mb,
  maxsize=400mb,
  filegrowth=13%
)to filegroup fg2
go
--将文件组设置为默认
alter database market modify filegroup fg2 default
go
--给已有文件组添加文件
alter database market add file(
  name='market4_data',
  filename='D:\Java\SQLServer2008_project\market4_data.ndf',
  size=5mb,
  filegrowth=10%,
  maxsize=100mb
)to filegroup fg2
go

------------------------删除数据库--------------------------

视图删除: 右键数据库名称----->删除----->确定(两个勾选上,如下图)

sql删除: 

if exists(select * from sysdatabases where name='market')
drop database market

 ------------------------建立数据库用户--------------------------

--->默认用户sa是SQLserver的超级管理员

--->每个登录SQLserver的账号都是一个用户

--->每个数据库可以有多个用户,每个用户可以同时访问多个数据库

创建数据库登录名(只能登录,不能操作里面的数据库)
数据库服务器---->安全性---->登录名--->右键新建用户 (1) windows身份验证登录的用户 前提是需要在本地计算机用户账户中添加用户,再在sqlserver的添加用户中指定本地账户名即可 (2) sqlserver验证登录的用户 有密码策略等根据需要勾选
创建数据库用户(用户名可以和登录名相同,给哪些数据库添加用户就能访问哪个数据库)
(创建登录名的同时指定能够访问的数据库)
数据库服务器名--->安全性--->登录名--->右键新建登录名--->输入登录名--->用户映射--->勾选可以访问的数据库---->确定

 ------------------------赋予用户权限--------------------------

sa超级管理员登录----->具体的数据库----->安全性---->用户---->用户名----->右键属性---->安全对象---->搜索---->(见下)

特定对象             //具体到哪一张table
特定类型的对象        //数据库的子级(表,视图,...)
属于该架构的所有对象   //哪个数据库

----->下面的权限中勾选权限---->确定

 ------------------------sql创建登录名,赋予权限--------------------------

use master
go

--创建登录名testlogin 密码123456
create login testlogin with password='123456'
go

--为数据库market创建用户testlogin
use market
create user testlogin for login testlogin
go

--为用户testlogin添加权限
use market
grant select,insert,update on testtable to testlogin
go

--撤销用户权限
use market
revoke update on testtable to testlogin
go

 

  ------------------------创建数据库角色--------------------------

角色分两种: 针对数据库本身操作的权限集合(服务器角色)
          针对数据库中的数据的操作权限集合(数据角色)
登录名sa在每个数据库中的用户名是dbo

sa登录,安全性---->登录名---->双击指定的登录名---->服务器角色---->勾选需要的角色权限(参考下图:)

 

创建自定义数据库角色:

  sa登录---->指定的数据库---->安全性--->角色---->右键创建数据库角色
给数据库用户添加角色:
 
   sa登录---->指定的数据库---->安全性--->用户--->属性---->勾选角色成员(见下图,是系统自带的角色,也可以自定义数据库角色)

 

  ------------------------查询数据库状态--------------------------

F1调用帮助文档

状态  定义  
ONLINE
 可以对数据库进行访问。即使可能尚未完成恢复的撤消阶段,主文件组仍处于在线状态。
 
OFFLINE
 数据库无法使用。数据库由于显式的用户操作而处于离线状态,并保持离线状态直至执行了其他的用户操作。例如,可能会让数据库离线以便将文件移至新的磁盘。然后,在完成移动操作后,使数据库恢复到在线状态。
 
RESTORING
 正在还原主文件组的一个或多个文件,或正在脱机还原一个或多个辅助文件。数据库不可用。
 
RECOVERING
 正在恢复数据库。恢复进程是一个暂时性状态,恢复成功后数据库将自动处于在线状态。如果恢复失败,数据库将处于可疑状态。数据库不可用。
 
RECOVERY PENDING
 SQL Server 在恢复过程中遇到了与资源相关的错误。数据库未损坏,但是可能缺少文件,或系统资源限制可能导致无法启动数据库。数据库不可用。需要用户另外执行操作来解决问题,并让恢复进程完成。
 
SUSPECT
 至少主文件组可疑或可能已损坏。在 SQL Server 启动过程中无法恢复数据库。数据库不可用。需要用户另外执行操作来解决问题。
 
EMERGENCY
 用户更改了数据库,并将其状态设置为 EMERGENCY。数据库处于单用户模式,可以修复或还原。数据库标记为 READ_ONLY,禁用日志记录,并且仅限 sysadmin 固定服务器角色的成员访问。EMERGENCY 主要用于故障排除。例如,可以将标记为“可疑”的数据库设置为 EMERGENCY 状态。这样可以允许系统管理员对数据库进行只读访问。只有 sysadmin 固定服务器角色的成员才可以将数据库设置为 EMERGENCY 状态。
 
View Code

 两种查询数据库状态方法:

--sql查询数据库状态
select state_desc from sys.databases where name='market'
go

--使用函数查看数据库状态
select DATABASEPROPERTYEX('aaa','status')
go

在脱机offline下可以对数据库的文件进行复制粘贴, online下不能复制粘贴(也就是备份工作)

指定数据库名---->任务---->脱机/联机

  ------------------------数据库的分离与附加--------------------------

分离数据库的目的: 便于在公司将指定的数据库与数据库软件脱离关系(并不会删除,在客户端看不见该数据库), 拷贝到u盘便于在家进行维护,方便了数据库管理人员,次日再将分离的数据库附加到软件(在客户端能看见了)

指定数据库---->右键---->任务----->分离

数据库---->右键----->附加----->添加分离的数据库---->确定

脱机与分离的区别: 脱机后在数据库服务器上还显示,只是不能用
                分离是直接从服务器上删除的意思
两者的共同点:就是为了对数据库的复制和粘贴操作

   ------------------------数据库的收缩--------------------------

数据库创建时,会对每个文件指定大小, 对存储空间是一种浪费,

收缩是指: 将数据库中已经分配大小的文件,对空闲的空间的删除

收缩方式:自动  手动

指定数据库---->右键属性---->选项----->自动收缩----->true    //自动收缩默认是25%的空闲空间
手动收缩:
指定数据库---->右键任务----->收缩----->数据库/文件

    ------------------------数据库的备份与恢复--------------------------

数据库备份类型有四种:

1.数据库完整备份
2.文件组或文件备份
3.事务日志备份
4.差异备份   //只备份上次完整备份后数据更改的部分
备份: 指定数据库名---->右键任务----->备份---->(将默认保存路径删除后添加新路劲)----->确定    //若是备份后,还原前需要删除原数据库
还原: 数据库----->右键还原数据库----->目标数据库:手动填写待还原数据库名称----->源设备:添加xxx.bak备份文件----->确定

上面是完整备份, 下面是差异备份(必须先完整备份,再差异备份, 还原必须先完整还原,再差异还原)

若要恢复7点数据,首先还原4点的完整备份1, 再还原7点的差异备份2

备份
1
.完整备份参考上面步骤 2.指定数据库--->任务---->备份---->备份类型:差异备份--->修改保存路劲--->确定
还原:(操作之前删除待还原数据库)
 数据库--->还原数据库---->步骤同上---->确定之前在选项---->勾选如下图---->确定
右键显示正在还原的数据库----->任务---->还原---->数据库---->选择备份差异文件--->确定

注:如果没有下图的操作,差异备份会报错!

posted @ 2016-09-04 13:51  乱世_独自美  阅读(238)  评论(0)    收藏  举报