企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# sql企业应用 OLTP联机事务处理 增删改查 及时更新数据,用到SQL server数据引擎 OLAP联机分析处理 免费 辅助商业决策。主要组件:SQL server分析处理、报表、整合服务 BI 商业智能 **相关组件:** ## 整合服务:提取、加载、转换: oricle、excel、文本提取 ## 分析:数据挖掘 ## 报表服务:制成报表 上述三个服务对应OLAP联机分析处理服务 ![](https://box.kancloud.cn/e0507acd691826238c77ddf6883ca1cf_463x478.png) ![](https://box.kancloud.cn/c6d7a8af5e6357655fd3c31744a9df54_613x438.png) ![](https://box.kancloud.cn/fcfd91d8d346a083fd9082168093bfcf_647x483.png) ## 默认是C-S结构 也就是 client-server 本地客户端-服务器结构。所以需要登录服务器。 ## 实例 每安装一次,就需要配置一个实例。实例就相当于一台sql server服务器。最多安装50个。 ![](https://box.kancloud.cn/987eb525c4d5fc52cf212d29ce3dc21d_521x486.png) ## 服务账号 一般 ful-text、browser(浏览器)两个选的是默认的登录身份,其他可以改成我们自己设置的 abc 或其他新身份 ![](https://box.kancloud.cn/2058d1a2e8a3e3411de97a591d3d2d1b_617x486.png) ![](https://box.kancloud.cn/b4e094025ea26918fd0e40d897c9549e_483x203.png) ![](https://box.kancloud.cn/c5f52d7a63702a4d25a8600c648c9df4_771x391.png) # 1. 安装 选自定义安装,就会跳出来相关设置。其他步骤默认即可。 ## 设置服务账户: 一般选择本地服务账户,更灵活 1、计算机管理 => 用户和组 => 用户 => 新增添加用户 2、在安装中设置服务账户;或者: 3、在 sql server 中,sql server 服务 => 选中一个实例,比如sql server(mysqlserver) 右击属性 => 登录 设置登录服务账户 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1fskyqk2jpmj30lt0g7jtw.jpg) ![](https://ws3.sinaimg.cn/large/006tKfTcgy1fskypz2svsj30lq0gbdia.jpg) ## 服务器设置 在sql server 中,如果有多个实例,则就会有多个sql server 等,只不过括号内的内容不一样。 一般公司使用时,都是买一个主机,买一个sql 账号,创建多个不同实例来给不同部门使用。比如有两个实例,一个名字叫mssqlserver,一个叫 test。那么就生成两个 sql server(mssqlserver),sql server(test)。 ![](https://ws2.sinaimg.cn/large/006tKfTcgy1fsl0jnc9egj30rx05pq4e.jpg) ### 访问服务器 如果需要访问其他服务器,可以在sql native client 配置里面进行。右击新建别名。 ![](https://ws2.sinaimg.cn/large/006tKfTcgy1fsl173q2hcj30mq08zjsm.jpg) ![](https://ws2.sinaimg.cn/large/006tKfTcgy1fsl99rq98fj30id06jab3.jpg) ### 侦听外部IP地址 可以设置实例所对应的外部IP 地址。 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1fsl9bdsnbsj30mi09gdh3.jpg) # 2. SSMS sql server management studio 几种方法都可以登录: - 如果是默认实例时,连接到服务器,直接输入计算机名,也可以输入默认实例名(比如mssqlserver),或者是家里的mac的IP地址`192.168.124.9`,或者输入`(LOCAL)`等。 - 如果是命名实例(命名实例就是我们自己命名安装的实例,假设名字是TEST),那么可在“服务器名称”上输入 `".\TEST"`,或者是`(LOCAL)mssqlserver`。 也可以服务器名称输入一个点好“.”,身份验证默认“windows 身份验证” - 如果命名实例没有全部侦听(在sscs中设置),那么就需要去sscs 中相关实例名字对应的端口号,并且会,再加逗号,比如 `192.168.124.9,45599` ![](https://ws3.sinaimg.cn/large/006tKfTcgy1fsl8a89vanj30cr07t74v.jpg) 可以新建查询。比如想查询默认实例的名称: ``` use master select @@servername //查询实例名称(servername 翻译成服务名,其实也就是实例名称) go ``` ![](https://ws2.sinaimg.cn/large/006tKfTcgy1fsl8z6o6iyj30lt0erwgd.jpg) 得出名字是 CA9A > 只支持多用户模式,不支持单用户模式。所以如果假设 master 受损需要恢复和重建时,无法使用 ssms。这时候需要用sqlcmd。 ## 计算机名 → 实例 → 数据库 的关系 ![](http://ww1.sinaimg.cn/large/006tNc79gy1g3ehztl2aij30zf0u0tql.jpg) # 3. SQLcmd 一般用 ssms 管理器即可(多用户连接模式),但有时候如果要用到单用户的数据库恢复和连接,则无法使用 ssms,此时必须用 sqlcmd。 支持单用户模式。比如 如果 master 受损需要恢复和重建(必须在单用户模式下才可以恢复和重建),这时候需要在单用户模式下,那就无法使用 ssms 管理工具,而必须使用 sqlcmd 来操作。 在命令行里面输入 `sqlcmd`,就可以进入命令状态。也可以实现上述 ssms 中的功能。如果要退出,则按 `command + c` - 如果是命名实例,则需输入`sqlcmd -S .\TEST `(四种办法,跟用 ssms的命名实例登录数据库是一样的。) ``` sqlcmd use master select @@servername go ``` ![](https://ws1.sinaimg.cn/large/006tKfTcgy1fsl90o7mvgj309v06kjrl.jpg) 如果是连接到网络服务器(或者是默认实例以外的命名实例)可以输入: ``` sqlcmd -s .\xmedi1601.sqlserver.rds.aliyuncs.com,3433 use master //指定服务器中的某个数据库 select @@servername go ``` 查询实例名称: ``` select @@servername ``` 显示实例名称(mssqlserver 或者是 sd5917121) ![](https://box.kancloud.cn/ccfc81729f286b9c77e27d3e3c56d874_752x538.png) # 4. 数据库 每创建一个实例,则会默认有如下4个主数据库。 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1fsl9vbwtlij306w0b3gma.jpg) ![](https://box.kancloud.cn/4314a3ecefcf1164b3117df49c12b703_525x386.png) ## Master(重要) - 存放实例级对象:登录名、端点、链接服务器、实例配置; - 存放数据库引导信息,记录所有数据库的文件路径; - 需要定期备份 ## Msdb(重要) - 存放作业、警报、维护计算、数据库邮件等配置和历史记录; - 需要定期备份 ## Model - 该实例创建新数据库的模板,包含数据库大小、排序规则、恢复模式、数据库对象等 - 如果在这里修改了以后,那么后续在第一级“数据库”中右击新建数据库以后,就会根据 model 中设置的来创建。 ## TempDB - 存放临时对象或中间结果集; - 每次重启时自动重建; - 类似缓存,需要磁盘空间足够,性能良好,可以移动路径 ## Resource(隐藏) - 一般被隐藏起来; - 每个实例唯一,只读; - 存放所有系统对象(sys 架构下); - 无法使用 sql 备份,但可以直接从其他数据库复制一份 ![](https://ws1.sinaimg.cn/large/006tKfTcgy1fsl9y38fbhj30op07stah.jpg) ## Distribution(不用太了解) - 用于复制中的分发服务器角色中的分发数据库 # 5. 数据库文件组成 上述说的Master、Msdb、Model、TempDB、Resource、Distribution 几个数据库,每个数据库中都有以下几种文件。 主数据库文件 .mdf 从数据库文件 .ndf 事务日志文件 .ldf ## 添加数据库 可以在master 主数据库右击,点击添加即可,注意修改文件名,后缀可以命名成.ndf,表示从数据库。也可以设置存储地址。 > 但一般不选择在“系统数据库”中的master中添加。而是直接在第一级 **“数据库”**中右击添加用户数据库。 ![](https://ws4.sinaimg.cn/large/006tKfTcgy1fsla1l02hjj30wm0ga41q.jpg) > 数据库一个区64kb,一个区里面有8页,最多8060b。数据库列长度设置时,最好能被8060整除。因为它同一行是不能跨页的。如果设置了4031,那么剩下的4029就会被浪费,而又需要另一页。 > 如以下语句则无法创建成功:`create table T1 (id int, name char(2000), address char(7000))`。是无法创建成功的,因为每一行加起来(int 默认4个字节+2000+7000+默认内部开销7个字节 = 9011 > 8060),出现以下提示: `消息 1701,级别 16,状态 1,第 1 行 创建或更改表 'T1' 失败,因为最小行大小是 9011,包括 7 字节的内部开销。而此值超出了允许的 8060 字节的最大表行大小。` ![](https://box.kancloud.cn/727f69113f33065ab6e0f693c5c4c40d_681x406.png) # 6. 数据收缩 ![](https://ws1.sinaimg.cn/large/006tKfTcgy1fslhrtmk9hj30o40a6dhk.jpg) 将用户经常访问的表放在不同的文件组上面,放在不同的磁盘上,这样保证磁盘有被均匀使用到,提高读写性能。 # 7. 数据库设计 最好将不同文件放在不同文件组,然后不同文件组放在不同磁盘里面。 ![](https://box.kancloud.cn/94df3f8df6373a1f74a1becb52cd7c45_603x409.png) # 8.重置 ID自增列 ### 1、参考 https://my.oschina.net/tianma3798/blog/667632 ![](https://box.kancloud.cn/dadafa557f3d8f71772ff6ea7dab013f_166x137.png) https://blog.csdn.net/helloword4217/article/details/23562967 https://blog.csdn.net/abbie/article/details/51941594 ``` alter table dbo.审核信息 add ID int identity(1,1);//设置 identity ID 编号从1,1 开始 set identity_insert dbo.审核信息 on; //允许使用 id 编号进行操作 insert into dbo.审核信息(项目编号,子公司编号, ID) values (1800232,'18035ZH0',14);//利用ID执行插入操作,但如果按两次则会有两个id为14的记录。 set identity_insert dbo.审核信息 off; // 用完记得关闭 ``` ### 2、判段一个表是否具有标识列 可以使用 objectPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,用法: Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHASIdentity') 如果有,则返回1,否则返回0 ### 3、查询某表标识列的列名 SQL Server中没有现成的函数实现此功能,实现的SQL语句如下 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.columns WHERE TABLE_NAME='表名' AND COLUMNPROPERTY( OBJECT_ID('表名'),COLUMN_NAME,'IsIdentity')=1 # 卸载SQL Server 实例 https://support.microsoft.com/zh-cn/help/955499/how-to-uninstall-an-instance-of-sql-server-2008 # 数据库导入excel 数据 在数据库右击 - 任务 - 导入数据。选 excel 即可 注意选择的 excel 版本类型需与文件类型一致。否则出现“未在本地计算机上注册microsoft.ace.oledb.16.0”提供程序,(或者是 12.0等其他信息) ![](https://box.kancloud.cn/e3b5826726a2ce0b2f059b582240c764_790x381.png) ![](https://box.kancloud.cn/1495a3d954df151618a8909383dff347_607x177.png) # 创建表 ``` create table dbo.阶段评估 ( 项目编号 varchar(10) not null, 子公司编号 varchar(20), 项目名称 varchar(200), …… ); ``` ![](https://box.kancloud.cn/648c8f817930c9ab33319c8213a5ed22_391x271.png) # 插入数据 .csv 数据 从本地文件夹“ ”中找到文件,斜号要注意方向。into 表示导入到数据表中。fields terminated 表示用‘,’字符分隔,忽略第一行的标题行。 ``` load data local infile 'e:/ ' into table dbo.阶段评估 fields terminated by ',' ignore 1 lines; ``` ![](https://box.kancloud.cn/95fa6c548d0b4ff7b83c5d6227a510e1_607x121.png) # delete 如果有多个 where 要满足,则可以用 where 字段名 in () `delete from dbo.阶段评估表 where 项目编号PM in ('1000002','1000003')`