2001—SQL Server运维随笔

一、知识点 

   1、TSQL基础

   【1】 在脚本中经常出现N''的语句,以大写字母N开头的字符串。说明将其内容作为Unicode字符常量(双字节)进行处理,而没有N开头的字符串,是将其作为字符常量(单字节)。

   2、字符串

-- 搜索指定子字符串
charindex(substring,string,[,start_location])
-- substring 搜索的目标串,长度限制为8000
-- string 被搜索的字符串
-- start_location 搜索的起始位置


--从字符串指定位置取指定长度的字符串
substring(input_string,start,length)
-- intput_string 可以是字符,二进制,文本
-- start是一个整数,起始位置为1
-- length是获取的长度

二、安装、日常运维

    1、WIN2012安装SQL2016

        【1】 安装SQL2016的前置条件

需要安装KB2919355-x64补丁。 而KB2919355又需要前置安装KB2919442-X64补丁。

        【2】 安装KB2919355补丁,报错:更新失败

第一步。移除失败更新(对所有更新补丁可用),OS下命令行使用

dism /online /remove-package /packagename:Package_for_KB2919355~31bf3856ad364e35~amd64~~6.3.1.14

第二步。清除Windows Update缓存

dism /online /cleanup-image /startcomponentcleanup

第三步。重启计算机后,再次进行安装。

   2、Sql Server2017备份数据到脚本sql文件

在数据库名称的右键菜单中选择“生成脚本”

下一画面根据需求,选择全部,或是部分表或视图 。

 点击右上角的“高级”按钮,打开如下对话框,进行操作

 上面那个选项,以设定恢复该脚本的sql server版本,以此为进行向上兼容。

下面那个选项,以设定备份的内容:架构(表结构、函数/存储过程、视图)、数据。

三、功能语句

   1—查询环境

--查询当前数据库
Select Name From Master..SysDataBases Where DbId=(Select Dbid From Master..SysProcesses Where Spid = @@spid)

--生成UUID
declare @uuid  varchar(32)
set @uuid=cast(REPLACE(newid(),'-','') as varchar(32))

   2—功能语句

declare @tablename varchar(400)

	declare tmpCur CURSOR FOR
		SELECT name FROM sys.objects WHERE type='v'
		OPEN tmpCur
		
	FETCH next FROM tmpcur INTO @tablename
	while @@fetch_status=0
			begin
				declare @sql varchar(300)
				--SELECT @sql='drop table '+@tablename
				SELECT @sql='drop view '+@tablename
				
				EXEC(@sql)
				FETCH next FROM tmpcur INTO @tablename
			end
	CLOSE tmpCur
	DEALLOCATE tmpCur

   3—表操作

--增加列
ALTER TABLE table01
    ADD  column01  varchar(32) DEFAULT('xxx')  NOT NULL
--修改列
ALTER TABLE table01
    ALTER COLUMN   column01  int  NOT NULL
--删除列
ALTER TABLE table01   DROP COLUMN column01

--建立主键(组合字段)
ALTER TABLE table01
    ADD CONSTRAINT PK_table01_PK PRIMARY KEY CLUSTERED(col01,col02)
--建立外键/新表
CREATE TABLE table01
(
   Fid varchar(32) PRIMARY KEY ,
   personId int ,
   genderId  int ,
   age     int ,
   CONSTRAINT  FK_table01_person FORGIEN KEY(genderId)
          REFERENCES T_Bas_Gender(Fid)
          ON DELETE CASCADE
          ON UPDATE CASCADE
)
--建立外键/现有表
ALTER TABLE table01
    ADD CONSTRAINT FK_table01_person FORGIEN KEY(genderId)
         REFERENCES T_Bas_Gender(Fid)
          ON DELETE CASCADE
          ON UPDATE CASCADE
-- ON DELETE CASCADE / ON UPDATE CASCADE 用于确保对t_bas_gender表的更改传播到table01

    4—表关系/约束

    5—大容量脚本恢复数据库

    均为网络搜集参考而来。

    例如:sqlcmd -S .\SQL2008  -U sa -P sql2008 -d backAmsData_nd -r -i C:\Users\LYD\Documents\script.sql

    sqlcmd命令参数清单:

 1    [-U 登录 ID]             [-P 密码]
 2    [-S 服务器]                [-H 主机名]           [-E 可信连接]
 3  [-d 使用数据库名称]  [-l 登录超时值]      [-t 查询超时值]
 4  [-h 标题]                    [-s 列分隔符]         [-w 列宽]
 5  [-a 数据包大小]         [-e 回显输入]         [-I 允许带引号的标识符]
 6  [-L 列出服务器]         [-c 命令结束]         [-D ODBC DSN 名称]
 7  [-q "命令行查询"]       [-Q "命令行查询" 并退出]
 8  [-n 删除编号方式]     [-m 错误级别]
 9  [-r 发送到 stderr 的消息]  [-V 严重级别]
10  [-i 输入文件]            [-o 输出文件]
11  [-p 打印统计信息]    [-b 出错时中止批处理]
12  [-X[1] 禁用命令,[退出的同时显示警告]]
13  [-O 使用旧 ISQL 行为禁用下列项]
14      <EOF> 批处理
15      自动调整控制台宽度
16      宽消息
17      默认错误级别为 -1 和 1

  注意,如果脚本太大,可以关闭stderr消息(不添加-r参数),以加快执行速度。

    6—脚本内执行语句

在查询管理器中,执行SQL字符串

DECLARE @sql NVARCHAR(MAX)
DECLARE @itemtsid INT = 42
DECLARE @orderuid VARCHAR(50) = 'your_order_uid'

SET @sql = N'UPDATE exportDAta SET itemtsid = @itemtsid WHERE fuid = @orderuid'

EXEC sp_executesql @sql, N'@itemtsid INT, @orderuid VARCHAR(50)', @itemtsid, @orderuid

四、故障处置

   1—错误21

    操作系统已经向 SQL Server 返回了错误 21(设备未就绪。)。SQL Server 错误日志和操作系统错误日志中的其他消息可能会提供更多详细信息。这是一个威胁数据库完整性的严重系统级错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。

--Tsql语句
use master
declare @databasename varchar(255)
--设定实例名
set @databasename='shts_db'
 --单用户模式
 ALTER DATABASE [shts_db] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)
dbcc checkdb(@databasename,REPAIR_REBUILD)
--多用户模式
ALTER DATABASE [shts_db] SET MULTI_USER WITH ROLLBACK IMMEDIATE

五、数据库快照

用于保存数据库的指定时间节点的状态,可查看、可恢复

   1—建立快照

USE master

CREATE DATABASE short20230505 ON( name='目标库',filename='c:\sqldb\short20230505.mdf')
AS   SNAPSHOT OF [目标库]

 3—从快照恢复

USE master

RESTORE DATABASE [目标库] FROM database_snapshot='short20230505'
GO

 六、设置工作模式

   1—单用户模式    

ALTER DATABASE [db_name]
SET single_user  WITH ROLLBACK IMMEDIATE
GO

   2—多用户模式

ALTER DATABASE  [数据库名]
SET  MULTI_USER
GO

   3—只读模式

ALTER DATABASE [数据库名]
SET read_only

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值