sqlserver
文章平均质量分 58
lusklusklusk
Oracle OCM,Mysql OCP,10多年DBA经验,博客内容不代表完全准确,只是记录自己一个的成长过程。更多博客参见个人ITPUB链接http://blog.itpub.net/30126024/
展开
-
Sqlserver大中小版本下载路径,生命周期,对应OS版本,Edition版本报价介绍
Sqlserver大中小版本下载路径,生命周期,对应OS版本,Edition版本报价介绍原创 2024-03-04 11:54:15 · 611 阅读 · 1 评论 -
Sqlserver关于tempdb临时数据库文件个数的最佳实践
一般而言,如果逻辑处理器数目小于或等于 8,则使用的数据文件数与逻辑处理器数相同。 如果逻辑处理器数大于 8,请指定 8 个数据文件。 如果仍然存在争用,则以 4 的倍数增加数据文件的数量,直到争用减少到可接受的级别或对工作负荷/代码进行更改。tempdb 数据文件的最佳数量取决于 tempdb 中的争用程度。首先,您可以将 tempdb 配置为至少等于为 SQL Server 分配的逻辑处理器的数量。对于更高端的系统,起始数字可以是八 (8)。如果争用没有减少,您可能必须增加数据文件的数量。原创 2023-10-09 12:00:18 · 633 阅读 · 0 评论 -
Sqlserver关于SSISDB的灾备问题
SSIDB不适合做灾备,SSISDB作为AG主从节点的数据库在都会在数据库实例升级或安装补丁遇到问题导致实例宕机,SSISDB作为Mirror、Logshipping模式的从节点数据库也会在数据库实例升级或安装补丁遇到问题导致实例宕机。如果实在要对SSIDB做灾备,建议做使用Logshipping模式,不会影响Logshipping模式的主节点,而且SSIDB一般是小库,Logshipping从节点出问题的话,在从节点使用主节点的备份也可以很快恢复原创 2023-08-29 12:36:16 · 535 阅读 · 0 评论 -
Sqlserver遇到TCP Provider An existing connection was forcibly closed by the remote host的解决方法
Sqlserver遇到TCP Provider An existing connection was forcibly closed by the remote host的解决方法原创 2023-08-28 19:33:05 · 1512 阅读 · 0 评论 -
Sqlserver 关于update output into从句的实践示例
Sqlserver 关于update output into从句的实践示例原创 2023-07-13 15:48:21 · 356 阅读 · 0 评论 -
Sqlserver 中select with(nolock)等同于READUNCOMMITTED脏读的理解和实验
相反,持有 Sch-S 锁的查询将阻塞尝试获取 Sch-M 锁的并发事务。备注:在 SQL Server 的未来版本中,将不再支持在 FROM 子句中使用应用于 UPDATE 或 DELETE 语句目标表的 READUNCOMMITTED 和 NOLOCK 提示。) from testtable1的结果一直是0,说明with(nolock)确实读的是脏数据,如果会话2 with(nolock)给用户展示数据后,会话1回滚了,那么会话2 with(nolock)给用户展示的数据就是错误数据。原创 2023-07-06 18:41:21 · 721 阅读 · 0 评论 -
Sqlserver Try Catch时Catch捕获到错误则重试一次的写法
Sqlserver Try Catch时Catch捕获到错误则重试一次的写法原创 2022-11-07 19:43:14 · 946 阅读 · 0 评论 -
Sqlserver并行等待CXPACKET、CXCONSUMER问题的解决思路和案例
Sqlserver并行等待CXPACKET、CXCONSUMER问题的解决思路和案例原创 2022-10-31 17:25:30 · 2363 阅读 · 0 评论 -
Sqlserver锁升级的理解和例子
Sqlserver锁升级的理解和例子原创 2022-10-25 18:33:11 · 1140 阅读 · 0 评论 -
Sqlserver存储引擎体系结构简介_Part1
Sqlserver存储引擎体系结构简介原创 2022-10-24 18:05:26 · 1864 阅读 · 0 评论 -
Sqlserver表和索引压缩
Sqlserver表和索引压缩原创 2022-10-24 13:12:14 · 1232 阅读 · 0 评论 -
Sqlserver update、delete使用inner join,关联多少行,就会update、delete关键字后面的表的多少行
Sqlserver update、delete使用inner join,关联多少行,就会update、delete关键字后面的表的多少行 Nested Loops joins Merge joins Hash jo原创 2022-10-18 19:59:24 · 3693 阅读 · 0 评论 -
Sqlserver执行计划中表的四种连接方式
SQL Server employs four types of physical join operations to carry out the logical join operations: Nested Loops joins Merge joins Hash jo原创 2022-10-14 16:54:01 · 394 阅读 · 0 评论 -
Sqlserver没有单独的undo文件,使用tempdb和redo log来存放undo数据
sqlserver的undo信息记录在temp文件中和log文件中,temp文件记录事务的行版本,log文件记录事务修改动作发生之前的表的前像原创 2022-10-11 17:57:43 · 589 阅读 · 0 评论 -
SQL Server大分区表没有空分区的情况下如何扩展分区的方法
sqlserver大表分区原创 2022-09-30 15:05:19 · 1131 阅读 · 0 评论 -
Sqlserver限制账户在哪些ip下才可以访问数据库
Sqlserver限制账户在哪些ip下才可以访问数据库原创 2022-08-09 17:16:48 · 1986 阅读 · 0 评论 -
Sqlserver BCP参数解释和字符格式选择和故障处理小结
sqlserver bcp in and bcp out原创 2022-07-15 12:17:28 · 1128 阅读 · 0 评论 -
Sqlserver关于TDE透明数据加密的使用总结
官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/security/encryption/encryption-hierarchy?view=sql-server-ver15,https://docs.microsoft.com/zh-cn/sql/relational-databases/security/encryption/transparent-data-encryption?view=sql-server-ver15h原创 2022-05-05 16:32:56 · 1598 阅读 · 0 评论 -
Begin end代码段里面有DDL和DML,如果DDL成功了而DML失败了,则DDL的代码也会回滚
如下案例DDL成功了,DML失败了,最后导致Begin end失败,则DDL也回滚了select * from testaGObegintruncate table testa;insert into testa select 1endGOselect * from testa结果id name1 12 13 14 15 1id name1 12 13 14 15 1信息(5 rows affected)Msg 213, Level 16, State 1,原创 2022-01-14 14:04:55 · 374 阅读 · 0 评论 -
Sqlserver 如何truncate linked server的表
执行如下truncate语句删除linked server的表会有报错truncate table Linkserver1.DB1.dbo.Table1;报错Cannot find the object “Table1” because it does not exist or you do not have permissions.解决方法,在linked server上使用sp_executesql即可exec Linkserver1.DB1.sys.sp_executesql N’trunc原创 2022-01-14 13:27:19 · 533 阅读 · 0 评论 -
Linux服务器安装 sqlcmd 和 bcp SQL Server 命令行工具
官方文档https://docs.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2016#odbc-13https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver15&viewFallback原创 2022-01-12 19:23:30 · 1983 阅读 · 0 评论 -
Sqlserver如何大概推算一张表最后一次发生DML的时间
结论1、sys.objects对应的modify_date不代表一张表的最后一次DML修改时间,truncate table也不会触发sys.objects对应的modify_date改变2、当数据库的自动更新统计信息选项is_auto_update_stats_on打开时,且没有手动执行UPDATE STATISTICS testa,则表在sys.stats对应的STATS_DATE(object_id,stats_id)对应的时间可以大概推测出表的最后一次DML修改时间,虽然不是特别准确selec原创 2022-01-10 14:04:21 · 733 阅读 · 0 评论 -
T-SQL随机取任意一台实例上任意一个数据库并按周轮询通知相关人员进行操作
---第一个存储过程只是先做测试,保证[dba].[ProdServerList]字段LogicalName对应的linked server都能被访问,不能访问的会打印出来Could not get server: serverNameDECLARE @HostName varchar(200) --声明变量,用户接收循环时的变量DECLARE @ServerName varchar(200) --声明变量,用户接收循环时的变量--定义游标DECLARE RunPerServer CURSOR原创 2022-01-06 18:26:51 · 395 阅读 · 0 评论 -
Sql Server实时监控发布订阅复制Replication、subscription有多少延迟的方法
使用创建令牌的方式,每15分创建一次令牌,然后过15分钟再查询上一次创建令牌产生的延迟结果,可以使用一个每15分钟运行一次的job来实现,第一步查询上一次创建令牌产生的延迟结果,第二步创建令牌Job的第一步查询令牌跟踪结果,可以把结果写入一张临时表,结果大于1行,说明有延迟,在图形界面SSMS replication monitor–Tracer Tokens看到publisher to distributor或distributor to subscriber或total latency都是pendin原创 2022-01-06 18:24:15 · 776 阅读 · 0 评论 -
Sqlserver使用游标循环查询所有sqlserver error日志带有Exception的报错
CREATE PROCEDURE [server].[usp_CheckSQLFatalExceptions]ASBEGINSET NOCOUNT ON;DECLARE @TSQL NVARCHAR(MAX);DECLARE @ServerLog TABLE( LogDate DATETIME, ProcessInfo NVARCHAR(64), MessageText NVARCHAR(2000));DECLARE @DumpLog TABLE( Se原创 2022-01-06 18:22:32 · 595 阅读 · 0 评论 -
Sqlserver使用游标循环,一个sql查询出所有linked server服务器上的某个job信息
结论:如果想要在一台服务器上,cursor查询所有linked server的上的某些信息,把linked server名称[DB123]当成变量时无法使用如下方式select COUNT(*) from [msdb].[dbo].[sysjobs][DB123]select COUNT(*) from [DB123].[msdb].[dbo].[sysjobs]即'select COUNT(*) from [msdb].[dbo].[sysjobs]'+quotename(@servername)原创 2021-12-06 19:00:52 · 1342 阅读 · 0 评论 -
Sqlserver使用游标循环插入,把上一个select语句的结果当成value值的一部分insert到一张表
查询出所有job名称select name from IBDMMSQL.msdb.dbo.sysjobs where enabled=1 and name not like ‘Database%’ and name not like ‘DB%’ order by 1把job名称当成第二个字段的value值(如下的’job_name’)插入[jobs].[Settings]insert into [jobs].[Settings] values (3008,‘job_name’,null,null,GE原创 2021-12-03 19:09:27 · 850 阅读 · 0 评论 -
Sqlserver的merge into或delete语句堵塞了不加with (nolock)的select语句,锁类型是LCK_M_IS
总结sqlserver遇到delete删除大量数据时,千万不能直接删除,删除过程会堵塞不加with (nolock)的select语句,锁类型是LCK_M_IS,delete删除过程中,虽然加with (nolock)不断查询该表时看到该表数据是减少的,但是一旦cancel取消delete会话,这个cancel取消动作很漫长(也就是回滚会很漫长,之前删除了多少行就需要回滚多少行),且cancel取消delete的操作完成后,还需要手工commit否则不加with (nolock)的select还是会堵塞,原创 2021-11-16 19:53:29 · 2320 阅读 · 0 评论 -
Sqlserver操作系统用户Administrator本地登陆SSMS报错18456的解决方法
官方文档https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/connect-to-sql-server-when-system-administrators-are-locked-out?view=sql-server-ver15结论:只要有操作系统的超级管理员账户,那么一定有方法可以登陆该服务器上的任何数据库,因为在任何数据库中,操作系统的administrator或root用户永远拥有高权限,可以进行配置项或数据原创 2021-11-04 09:17:07 · 1692 阅读 · 0 评论 -
Sql Server监控发布订阅复制Replication、subscription的报错、延迟时间、未发送的命令行数量
监控要点1、采集distribution.dbo.MSrepl_commands显示的复制的命令行数量2、采集distribution.dbo.MSdistribution_status显示的未发送的命令行数量3、采集distribution.dbo.sp_replmonitorhelpsubscription显示的延迟时间当复制的命令行数量超过某个阀值 或 未发送的命令行数量超过某个阀值 或 延迟时间超过某个阀值就报警–代码如下USE [DBA]GO/****** Crate Date:原创 2021-10-29 17:28:01 · 586 阅读 · 0 评论 -
Sqlserver linked server指向Excel报错编号为7399和7303的解决方法
linked server的创建语句如下EXEC master.dbo.sp_addlinkedserver @server = N'XL_INDEXPERFORMANCELIST', @srvproduct=N'Jet 4.0', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'\\frdbprod1\MKTINDX\IndexPerformanceList_DBPROD3.xls', @provstr=N'Excel 5.0'EXEC master原创 2021-10-13 13:46:18 · 1507 阅读 · 0 评论 -
Sqlserver数据库邮件的体系结构及常用的查询视图
官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/database-mail/database-mail?view=sql-server-2017https://docs.microsoft.com/zh-cn/sql/relational-databases/system-catalog-views/database-mail-views-transact-sql?view=sql-server-2017数据库邮件体系结构数原创 2021-09-23 15:19:56 · 361 阅读 · 0 评论 -
Sqlserver定位哪些对象和哪些会话哪些sql语句消耗了tempdb
官方文档链接https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-session-space-usage-transact-sql?view=sql-server-ver15https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-原创 2021-09-23 15:18:29 · 202 阅读 · 0 评论 -
Sqlserver系统数据库和用户数据库日志文件全部丢失的恢复
系统数据库和用户数据库日志都丢失的情况下,数据库无法启动,需要先重建系统数据库日志文件以便把sqlserver service拉起来,再重建用户数据库试过但是行不通的办法1、-mClient单用户模式下启动数据库并重建系统数据库日志,即使用net start “SQL Server (MSSQLSERVER)” -m"Microsoft SQL Server Management Studio - Query"进入数据库重建系统数据库日志,出现报错,系统数据库日志不允许重建System databas原创 2021-06-21 17:58:02 · 1103 阅读 · 0 评论 -
Sql Server关于create index include带有包含列的索引的最全解释
官方文档https://docs.microsoft.com/zh-cn/sql/relational-databases/indexes/create-indexes-with-included-columns?view=sql-server-2017https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-indexes-with-included-columns?view=sql-server-2017在Sq原创 2021-05-31 16:30:28 · 1972 阅读 · 0 评论 -
Sqlserver 报错Server is in script upgrade mode. Only administrator can connect at this time的解决方法
Sqlserver 登录报错Server is in script upgrade mode. Only administrator can connect at this time(Error: 18401)的解决方法所以遇到上述错误解决方法:就是持续观察error日志。一旦在ERRORLOG中打印了“Recovery is complete”消息就代表升级完成了升级逻辑:一旦OS操作系统安装了Sqlserver的补丁包或升级包,则重新启动Sql Server实例的过程中,当实例内有数据库正处于rec原创 2021-05-10 14:36:27 · 531 阅读 · 0 评论 -
SqlServer遇到SPN_Service Principal name问题的处理方法
SPN(Service Principal name)服务器主体名称。SPN 是服务在使用 Kerberos 身份验证的网络上的唯一标识符,它由服务类、主机名和端口组成。在使用 Kerberos 身份验证的网络中,必须在内置计算机帐户(如 NetworkService 或 LocalSystem)或用户帐户下为服务器注册 SPN。对于内置帐户,SPN 将自动进行注册。但是,如果在域用户帐户下运行服务,则必须为要使用的帐户手动注册SPN。客户端连接Sqlserver实例报SPN错误的处理方法1、先登录S原创 2021-04-02 11:51:32 · 1119 阅读 · 0 评论 -
sqlserver移动文件路径move datafile的三种方法
sqlserver移动文件的三种方法1、设置数据库分离,再把文件拷贝到新目录,再附加2、设置数据库脱机,再把文件拷贝到新目录,再ALTER DATABASE XX MODIFY FILE (NAME=‘logicalname’,FILENAME=‘新目录\YY.dbf’);再联机3、ALTER DATABASE XX MODIFY FILE (NAME=‘logicalname’,FILENAME=‘新目录\YY.dbf’);再关闭实例,再拷贝文件到新目录,再启动实例其中查询NAME和FILE原创 2021-03-24 15:38:14 · 763 阅读 · 0 评论 -
sqlserver关于logshipping、mirror、alwayson这些高可用灾备环境backup log备份日志的策略
高可用灾备环境的截断日志分类logshipping:会截断日志replication-subscription:不会截断日志mirror:不会截断日志always on:不会截断日志总结logshipping:因为会截断日志的,所以数据库有了logshipping,就不再需要做backup log了logshipping的primary实例没有backup log的作业,除非primary实例上还有没有搭建logshipping的数据库mirror:backup log只能在primar原创 2021-03-24 15:37:11 · 801 阅读 · 0 评论 -
sqlserver always on关于备份的总结
alwayson 同步暂停的情况下,是否主节点和辅助节点都可以同时备份日志主副本:正常备份辅助副本:备份日志报错:Cannot backup from a HADRON secondary because it is not in Synchronizing or Synchronized state.备份数据库不加COPY_ONLY报错:This BACKUP or RESTORE command is not supported on a database mirror or secondary原创 2021-03-24 15:36:41 · 3225 阅读 · 1 评论