SSMS使用笔记

sqlserver内存管理

sqlserver对系统内存的管理原则是:按需分配,且贪婪(用完不还)。

​ 它不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满机器内存(并不会撑满,还是有个最大限制,比机器内存稍小),在重启服务前,sqlserver不会释放该内存,也没有任何办法可人为释放。

​ 以下命令虽然可释放缓存,但sqlserver并不会因此释放已占用的内存。

DBCC FREEPROCCACHE     --清除存储过程相关的缓存
DBCC FREESESSIONCACHE     --清除会话缓存
DBCC FREESYSTEMCACHE('All')     --清除系统缓存
DBCC DROPCLEANBUFFERS     --清除所有缓存

修改最大可占用物理内存进行限制。

修改办法如下:

​ 管理员用户登录数据库客户端(Microsoft SQL Server Management Studio),在实例名(树形菜单根节点,显示登录名那栏)上右键,选择属性–>内存,设置“最大服务器内存”,单位为MB,可根据实际内存调整。

img

如此调整后,机器内存便不会被sqlserver耗尽了。

SQLServer数据库备份的使用

推荐使用方法二

方法一:使用SQL语句添加语句

1. 数据库备份

选择想要备份的数据库,”右键“→”任务“→”生成脚本“。

在这里插入图片描述

直接“下一步”。

在这里插入图片描述

选择好具体的数据库对象,然后点击“下一步”。

在这里插入图片描述

选择要保存的脚本选项,然后点击“下一步”。

在这里插入图片描述

默认选择“下一步”。
在这里插入图片描述

2. 数据库还原

使用刚才生成的SQL语句,点击执行。即可在数据库中创建数据表。

注意: 此处要注意的是,在新的数据库中创建一个数据库的名字,必须是跟之前的数据库名字保持一致。比如之前是PerformanceAppraisalDb,就要创建一个数据库名为PerformanceAppraisalDb的数据库。

在这里插入图片描述

注意: 此方法只会还原数据表,并不会对数据库进行添加数据项。

方法二:使用备份还原方式

1. 数据库备份

选择要备份的数据库,“右键”→“任务”→“备份”。

在这里插入图片描述

留意好备份路径,点击“确定”进行备份。
在这里插入图片描述

2. 数据库还原

在新数据库中,添加一个名字与之前备份的数据库名字相同的数据库。例如:PerformanceAppraisalDb

在这里插入图片描述

在新建的数据库中,“右键”→“任务”→“还原”→“数据库”。

在这里插入图片描述

选择“设备”,点击三个小点的按钮,打开资源管理器。在新弹出的窗口中,点击“添加”。
在这里插入图片描述

选择好备份的数据库脚本,点击确定。
在这里插入图片描述

此处不要着急点击"确定"。
在这里插入图片描述

在“选项”中,选中“覆盖现有数据库”,取消掉“日志相关的”。最后点击“确定”。
在这里插入图片描述

注意: 此方法的好处是可以备份到数据表内的数据项。

SSAS数据库备份与还原

1. SSAS备份

选择想要备份的数据库,”右键“→”备份“。点击浏览可以选择备份路径

image-20230714105528703

选择好路径直接点击OK。

image-20230714105417824

2. SSAS还原

直接右键任意数据库,”右键“→”还原“。通过浏览选择备份文件

通过还原数据库选项选择需要还原的数据库,现有一般是覆盖,新的就是新增

存储位置设置还原数据库的路径

上述设置完后 点击确定 等待还原结束

image-20230714105711219

sqlserver用户权限设置

数据库

新建一个用户test,拥有浏览数据库POC_test中表数据的权限,但没有增删改的权限

1.新建用户test

安全性–>登录名,右键登录名 选择新建登录名

image-20231207094752626

2.服务器角色

除非是管理员账户,一般默认public即可

bulkadmin:允许用户执行 BULK INSERT 任务。
dbcreator:允许用户创建、更改、删除数据库。
diskadmin:允许用户管理磁盘文件。
processadmin:允许用户终止 SQL Server 进程。
public:所有登录用户都是 public 角色的成员,但它没有显式权限。
securityadmin:允许用户管理登录、服务器角色和数据库角色。
serveradmin:允许用户配置服务器范围的配置选项。
setupadmin:允许用户添加和删除 SQL Server 实例。
sysadmin:具有服务器上的最高权限,可以执行任何操作。

image-20231207095550761

3.用户映射

选择映射的库给test用户,角色身份按需授予

db_owner:db_owner 是数据库的所有者,拥有数据库中所有对象的完全控制权限,包括创建、删除、更改和查询。
db_accessadmin:允许成员添加或删除 Windows 用户、Windows 组或 SQL Server 登录作为数据库用户。
db_securityadmin:允许成员管理数据库角色、权限和用户。
db_ddladmin:允许成员运行 CREATE, ALTER, DROP 和其他 DDL 语句。
db_datawriter:允许成员在所有用户表中插入、更新或删除数据。
db_datareader:允许成员在所有用户表中选择数据。
db_denydatawriter:阻止成员在所有用户表中插入、更新或删除数据。
db_denydatareader:阻止成员在所有用户表中选择数据。
public:所有数据库用户都是 public 角色的成员,但它没有显式权限。

image-20231207095937262

也可以通过命令行分配角色

-- 要将用户添加到 db_datareader 角色,可以使用以下 T-SQL 命令:
USE YourDatabaseName;  -- YourDatabaseName数据库名
ALTER ROLE db_datareader ADD MEMBER YourUserName;  -- YourUserName用户名

4.安全对象

分配连接SQL的权限即可

image-20231207100345542

5.状态

image-20231207100438542

存储过程

对于POC_test库下的存储过程,新建用户test没有查看的权限

POC_test–>可编程性–>存储过程–>选择分配权限的函数右键点击属性–>搜索用户并选择–>分配权限

image-20231207101206477

也可以通过命令行分配权限

-- GRANT EXECUTE 语句将授予用户对指定函数的执行权限
USE YourDatabaseName; -- YourDatabaseName数据库名
GRANT EXECUTE ON YourFunctionName TO YourUserName; -- YourFunctionName函数名、YourUserName用户名

-- 授予 VIEW DEFINITION 权限时,用户仅能够查看对象的定义,而不具备执行该对象的权限。
-- 如果用户需要执行函数,你还需要使用 GRANT EXECUTE 授予相应的执行权限
USE YourDatabaseName;
GRANT VIEW DEFINITION ON OBJECT::YourFunctionName TO YourUserName;

sqlserver邮件功能配置

在配置之前请先把邮件的POP3之类的设置一下:

简图:

图片

其他邮箱都是类似的,下面我们开始SQL Server数据库的演示

注:服务器对应端口号可以直接百度查,比如上述SMTP服务器,它的默认端口号是25

图形化演示

第一步:找到数据库【管理】下的【数据库邮件】,如下图:

图片

第二步:在弹出的配置向导中我们继续

图片

第三步:按向导提示,我们选择第一个

图片

配置名字随意取,可以用项目名。显示名称建议用版本号+服务器ip,这样出问题可以定位跟踪

第四步:添加邮件账户,账号具体信息如下图

图片

第五步:配置完后点击下一步

图片

微软图形化的东西一般有个特点,一路下一步基本上能解决所有基础问题

勾选一下(貌似不勾选也没事)

图片

图片

图片

图片

这样我们就配置完成了。

测试一下

图片

发一封邮件到“我为NET狂”的官方邮件去

图片

去看看:

图片

命令演示

命令演示:(不需要记,你又不是DBA,会用即可)

脚本如下:

--开启发邮件功能
exec sp_configure 'show advanced options',1
reconfigure with override
go
exec sp_configure 'database mail xps',1
reconfigure with override
go

--创建邮件帐户信息
exec msdb.dbo.sysmail_add_account_sp
 @account_name ='dunitian1',                   -- 邮件帐户名称  
 @email_address ='xxxx@yeah.net',              -- 发件人邮件地址    
 @display_name ='SQLServer2014_192.168.1.20',  -- 发件人姓名
 @MAILSERVER_NAME = 'smtp.yeah.net',           -- 邮件服务器地址
 @PORT =25,                                    -- 邮件服务器端口
 @USERNAME = 'xxxx@yeah.net',                  -- 用户名
 @PASSWORD = '邮件密码'                            -- 密码  
GO
--数据库配置文件
exec msdb.dbo.sysmail_add_profile_sp
 @profile_name = 'SQLServer_DotNetCrazy1',     -- 配置名称
 @description = '数据库邮件配置文件'            -- 配置描述
go

--用户和邮件配置文件相关联
exec msdb.dbo.sysmail_add_profileaccount_sp
 @profile_name = 'SQLServer_DotNetCrazy1',     -- 配置名称
 @account_name = 'dunitian1',                  -- 邮件帐户名称    
 @sequence_number = 1                          -- account 在 profile 中顺序(默认是1)
go1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.

图片

图片

发送邮件脚本:

exec msdb.dbo.sp_send_dbmail
@profile_name = 'SQLServer_DotNetCrazy1',   --配置名称
@recipients = 'dotnetcrazy@foxmail.com',    --收件名称
@body_format = 'HTML',                      --内容格式
@subject = '文章标题',
@body = '邮件内容'1.2.3.4.5.6.

结果:20的ip也发过来了

图片

相关查询

select * from msdb.dbo.sysmail_allitems
select * from msdb.dbo.sysmail_faileditems --失败状态的消息
select * from msdb.dbo.sysmail_unsentitems --看未发送的消息
select * from msdb.dbo.sysmail_sentitems --查看已发送的消息
select * from msdb.dbo.sysmail_event_log  --记录日记

sqlserver数据库如何清理日志文件

很多时候SQLSERVER的日志文件是不看的,但时间久了,够把磁盘撑爆,这时候就需要清理日志文件。使用以下方法,在实际环境中经过测试,400G的日志文件1秒就被清理

1. 将恢复模式改成“简单”

右键数据库 - 属性,切换到选项,将恢复模式修改为简单
将数据库恢复模式改为简单

2. 收缩日志

右键数据库 - 任务 - 收缩 - 文件
收缩日志
确定后会发现,日志文件被迅速清理。

3. 命令操作

USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE   --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY)  --设置压缩后的日志大小为2M,可以自行指定
GO
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL  --还原为完全模式
GO
```sql
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE   --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY)  --设置压缩后的日志大小为2M,可以自行指定
GO
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL  --还原为完全模式
GO
  • 28
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leo⁵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值