SQLServer
文章平均质量分 76
SQLServer
Hehuyi_In
这个作者很懒,什么都没留下…
展开
-
数据库常见告警、报错与解决方法记录
常见的 Oracle SQL Server PostgreSQL 错误号,错误原因、处理方法与参考文档整理原创 2020-05-15 00:04:13 · 15143 阅读 · 1 评论 -
PostgreSQL 通过 tds_fdw 访问 SQL Server数据,常见报错分析及处理
PostgreSQL 通过 tds_fdw 访问 SQL Server数据,常见报错分析及处理原创 2023-02-07 17:08:08 · 4898 阅读 · 2 评论 -
SQL Server扩展事件系列(一)—— 简介、概念解析与注意事项
扩展事件(Extended Events)引入于2008版本,具有高度可伸缩可配置的体系结构,使用户能够按需收集解决性能问题或确定问题所需的信息。扩展事件是轻型性能监视系统,性能消耗非常少,未来可能会替代掉profiler和trace(目前还做不到,功能相比前两者还有差距)。转载 2019-06-17 11:11:10 · 1943 阅读 · 1 评论 -
阿里云 DTS同步SQL Server 的101个坑
测试同步源库为SQL Server,目标库为SQL Server、MySQL、ADB for MySQL均会遇到以下问题。其中红色部分为尚无解决方案而影响严重的问题。 序号 问题 影响 解决方案 备注 建议改进项 1 DTS隐式转换问题 1.源库IO吞吐量超过1GB/s、延迟超过1秒 2. 16c CPU使用率超过50% 3. 全量同步速度极慢,超.原创 2022-02-25 17:13:25 · 2704 阅读 · 0 评论 -
SqlServer 通过扩展事件审计DDL操作
审计对象create、alter、drop操作,即object_created、object_altered、object_deleted事件。设置过滤条件:ddl_phase=commit:只记录提交的ddl操作,对应 [equal_uint64]([ddl_phase],(1)) database_id<>2:不记录临时对象操作,database_id=2为tempdbCREATE EVENT SESSION [audit_ddl] ON SERVER ADD EVENT s原创 2021-07-29 15:54:18 · 1765 阅读 · 0 评论 -
关于SQL Server alter table修改字段类型
最近业务方觉得业务表int字段精度不够,需要转为decimal。操作的数据库版本是2014,涉及30多张表,其中有9个千万级的大表,还不止改一个字段。这里总结下注意事项和遇到的问题:隐式转换问题:代码对应变量类型要改,关联表字段类型要改,否则就是在制造性能炸弹 索引问题:字段上有索引需要先删除,改完类型一定要记得建回去 性能问题:删除索引前对应业务sql必须停掉,否则高并发全表扫描瞬间能将资源耗尽 阻塞对应表读写:alter过程锁表,对该表的读写操作均会被阻塞 -- 2016支持online.原创 2021-07-24 10:42:33 · 4409 阅读 · 0 评论 -
SqlServer将表导出为SQL语句
注意:如果可以通过备份恢复或者link server等方式批量导入,效率会更高,不太建议用导出为sql的方法,但可以作为了解。选择要导出的对象选择文件保存路径(也可以保存到剪切板或者新窗口),如果有多个对象,可以放一个文件也可以放多个文件选择Advanced,可以设置各种属性,重要的是要把导出类型改为“schema and data”查看导出的文件如果表小(50万行内),这个方法还行。对于大表,导出很慢,生成的文件也很大,基本就不太可用。生产环境中导出原创 2020-03-03 20:22:59 · 5467 阅读 · 1 评论 -
SQL Server Error 4014,A fatal error occurred while reading the input stream from the network
One of our servers would periodically suffer from a fatal error during batch processing. This was a SQL Server 2008 instance running on Windows 2008 R2.The error in question:A fatal error occurred while reading the input stream from the network. The s翻译 2021-06-17 17:02:50 · 2567 阅读 · 0 评论 -
Alwayson 系统视图、常用sql、性能计数器、扩展事件
一、系统视图1.系统目录视图(System catalog view)由于存储alwayson的配置信息,一旦确定后如果不修改配置不会再变化。System catalog view Description sys.availability_databases_cluster 查看本实例中的ag数据库信息 Contains one row for each availability database on the instance of SQL Server t..原创 2021-05-16 23:12:48 · 2089 阅读 · 0 评论 -
Failover and Failover Modes (Always On Availability Groups)
一、 How Automatic Failover Works自动故障转移的工作方式 If the server instance that is hosting the current primary replica is still running, it changes the state of the primary databases to DISCONNECTED and disconnects all clients. 关闭主库,断开所有客户端连接 If any log re.翻译 2021-04-30 16:58:16 · 1553 阅读 · 1 评论 -
SqlServer 突破CPU 20核限制
SqlServer安装时企业版会有两种选项:Microsoft SQL Server Enterprise (64-bit),Microsoft SQL Server Enterprise: Core-based Licensing (64-bit)。前者为EnterpriseServer+CAL license 模式,最大计算能力限制为20核;后者为Enterprise Per Core license 模式,最大计算能力限制为操作系统最大CPU核数。如果在创建时选错了类型,服务器实际要用到超过20核,原创 2021-04-17 00:06:56 · 5893 阅读 · 0 评论 -
The EXECUTE permission was denied on the object ‘sp_OACreate‘
开发反馈程序遇到如下报错The EXECUTE permission was denied on the object 'sp_OACreate', database 'mssqlsystemresource', schema 'sys'.The EXECUTE permission was denied on the object 'sp_OAMethod', database 'mssqlsystemresource', schema 'sys'.The EXECUTE permissio原创 2021-03-07 13:32:54 · 5077 阅读 · 0 评论 -
Oracle 透明网关创建到 SQLServer dblink
一、 情景介绍业务中有两个不同的系统,分别使用的是 Oracle 和 SQLServer 数据库,现需要在Oracle 数据库中直接查询SQLServer 数据库的数据。Oracle、网关和 SQL Server 可以分别安装在任意主机上,只要满足网络互通就可以。想要在 Oracle 中直接查询 SQL Server 中的数据,需要完成以下步骤:下载并安装透明网关 配置透明网关 配置 Oracle 数据库的 TNS 配置 配置 SQL Server,使其能够远程连接(若已.转载 2020-12-10 01:24:20 · 2901 阅读 · 1 评论 -
SqlServer 报错 The login packet used to open the connection is structurally invalid
大早上SqlServer收到一堆告警The login packet used to open the connection is structurally invalid; the connection has been closed. Please contact the vendor of the client library. [CLIENT: 192.168.7.8]网上搜索了下报错含义是:发起login请求的客户端 发送的packet不是sqlserver预期的packet。可能原创 2020-12-06 09:55:13 · 4223 阅读 · 0 评论 -
Could not allocate space for object sys.sysfiles1.sysfiles1 in database
一、 问题描述给数据库添加数据文件时遇到了一个奇怪的报错:Could not allocate space for object 'sys.sysfiles1'.'sysfiles1' in database 'dbname' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding addition原创 2020-12-01 22:05:21 · 2382 阅读 · 0 评论 -
阿里云SQL Server rds跨区域迁移方案及优缺点对比
最近有一个需求,需要将SQL Server rds从阿里云香港区域迁移到杭州区,整理一下迁移可行方案及优缺点对比。迁移方案 主要操作方法 优点 缺点 SQL Server自带导入导出工具 找一台能连通源和目标环境的客户端环境,利用SQL Server自带导入导出工具迁移 1. 适合只需要迁移表,表数量不多且数据量较小的环境。 2. 操作简单且不依赖其他工具。 1. 不适合对象类型多,表多或表数据量比较大的环境 2. 停机时间原创 2020-11-25 15:31:07 · 1962 阅读 · 0 评论 -
阿里云 DTS迁移自建SQL Server注意事项
当完整备份数据库的时候,我们有时候可能会遇到一种极端情况,比如服务器上C,D,E三个盘符都只剩下5G空间了但是如果要完整备份业务库需要12G的空间,那么这时候怎么办呢?使用文件组备份吗?但是数据库没有做表分区,没有分多个文件组,就只有一个主文件组啊这时候我们可以使用备份文件分割我使用自己机器示范一下,我的机器上有一个Temp2的数据库,数据库大小为1GB备份我们做一个Temp2数据库的完整备份DECLARE @CurrentTime VARCHAR(50),..原创 2020-10-30 19:25:16 · 1834 阅读 · 0 评论 -
sqlserver 扩展事件监控慢sql与阻塞sql,xml格式日志解析
之前想查一个pdb创建时间,发现v$datbase里找不到,看书偶然发现是在另一个视图查询PDB是怎么来的(从哪里克隆)、如何被创建、何时创建 —— cdb_pdb_historyselect db_name,con_id,pdb_name,operation,op_timestamp,cloned_from_pdb_namefrom cdb_pdb_historywhere ...原创 2019-07-16 22:27:39 · 3875 阅读 · 2 评论 -
SQL Server 变更数据捕获(CDC)vs 更改跟踪(Chang Tracking)
一、 简介在2008版本之前,通常使用DML触发器监控对表数据库的变更,但是触发器的维护比较困难,性能也不高。2008推出了新功能 变更数据捕获(Change Data Capture,即CDC)。二、 实现过程(Realization)1. 启用CDC例如我们的测试库名为CDC_DB--启用数据库CDC USE CDC_DB GO EXECUTE sys.sp_cdc_enable_db; GO --检查启用是否成功 SELECT is_cdc_enabled,CA.转载 2020-10-24 00:00:20 · 5104 阅读 · 0 评论 -
SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一、 构造测试数据--创建测试表IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestRows2Columns]') AND type in (N'U'))DROP TABLE [dbo].[TestRows2Columns]GOCREATE TABLE [dbo].[TestRows2Columns]( [Id] [int] IDENTITY(1,1) NOT NULL,转载 2020-10-23 18:32:13 · 7835 阅读 · 1 评论 -
SqlServer 如何插入图片和导出图片数据
SqlServer 2005开始可以通过OPENROWSET和bcp操作,下面是两种实现方法。一、 示例1SQL Server import p_w_picpath - SQL Server export p_w_picpath Extract p_w_picpath SQL Server - SQL Server export binary data1. 创建目标表USE AdventureWorks;-- Create p_w_picpath warehouse for im.转载 2019-09-01 23:02:22 · 5666 阅读 · 2 评论 -
pg导入数据至sqlserver方法整理及对比
业务方要求将pg中的一个表导入sqlserver,表约1000万行。测试了几种常用的导入导出方法,有成功也有失败的。一、 pg导出为sql文件,sqlserver中执行如果没有用到特殊数据类型或者字符,数据量也比较小,这种方法一般是可以的。1. pg导出里面会有建表、建索引、授权等语句,需要处理一下,或者可以用 --data-only选项。pg_dump -d dbname -U username -t tablename --inserts > tablename.sql.原创 2020-08-28 00:20:02 · 2632 阅读 · 0 评论 -
sqlserver SELECT显示和PRINT打印超长的字符
从SQL Server 2005开始,引入了varchar(max) / nvarchar(max) 数据类型,表中可不使用LOB数据类型而突破单列8000 / 4000字符的限制,动态SQL也可以拼接得更长;但查看这类字符的时候,在某些地方,字符长度的限制仍然存在,比如:单列:SSMS里返回的列值 动态SQL:print命令打印字符时一、 SSMS里返回的列值长度限制在SSMS的工具-选项(Tools-Options)里可设置每列最多显示的字符数,默认为上限65535个字符,如图:注:转载 2020-08-13 15:06:03 · 6633 阅读 · 1 评论 -
sqlserver IDENTITY属性使用小结
原文参考自https://www.cnblogs.com/seusoftware/p/3804333.html 有删改,补充了一部分原文没看懂的。从SQL Server 2012开始有了Sequence,简单用列如下:CREATE SEQUENCE TestSeqSTART WITH 1INCREMENT BY 1 ;SELECT NEXT VALUE FOR TestSeq AS NextValue;在这之前,表中生成序列号大多都是借助IDENTITY列属性,当然也有一些时...转载 2020-08-12 21:42:41 · 5937 阅读 · 0 评论 -
sqlserver 如何找到 WaitResource 对应的对象名
在sqlserver 扩展事件的block和死锁报告中,经常能看到类似这样的等待资源waitresource=PAGE: 6:3:70133 waitresource=KEY: 6:72057594041991168 (ce52f92a058c)应该如何通过它们找到 WaitResource 对应的对象名呢一、waitresource=PAGEwaitresource=PAGE: 6:3:70133 分别对应的是Database_Id : FileId : PageNumber...原创 2020-08-11 16:23:44 · 3380 阅读 · 1 评论 -
SQL Server、Oracle 如何清除指定SQL的执行计划
SQL Server、Oracle 如何清除指定SQL的执行计划原创 2020-05-03 13:31:04 · 4202 阅读 · 1 评论 -
SQL Server 修改数据库名称
一、 准备工作改名时如果有其他用户会话连接该数据库会报错,必须先杀掉那些用户会话或使数据库处于单用户模式下再执行。查询当前有哪些会话连接到这个数据库SELECTSPID FROMmaster.dbo.sysprocessesWHEREdbid=DB_ID('Test1');如果有,执行KILL命令杀掉KILL SPID也可以将数据库设置为单用户模式。在数据库属性 -> “连接”页面 找到“限制访问”选项,选择SIGLE_USER。命令行us...原创 2020-08-07 16:38:55 · 20913 阅读 · 1 评论 -
Reporting Services 占用内存过高问题
收到告警sqlserver服务器内存使用率过高,登录检查发现Reporting Services 占用内存超过13G,检查DB中正在执行的sql并没有发现ReportServer DB相关sql,业务方也说没有查到Reporting Services当前在执行什么。重启Reporting Services服务后故障恢复,查了下网上文章相关问题的分析和调整方法。一、 查询占用内存最高的Reporting Services信息Select Top 10 *From ReportServ.原创 2020-08-03 19:09:47 · 8269 阅读 · 0 评论 -
SQL Server DMVs in Action 学习笔记
发现一本挺好的书《SQL Server DMVs in Action》,里面介绍了些常用视图、常用监控语句写法、还有大量sql脚本。dmv、dmf、目录视图(例如sys.indexes,sys.columns)DMVs contain dynamic data and catalog views contain static dataCatalog views contain both server- and database-level objects and tend to bemore.原创 2020-08-02 01:39:12 · 1635 阅读 · 0 评论 -
WSFC 移动主节点报错 the specified cluster node is not the owner of the group
WSFC 移动主节点时遇到以下报错英文版报错为The operation failed because either the specified cluster node is not the owner of the group, or the node is not a possible owner of the group解决方法如下:把两台机器都勾上再次执行移动操作即可参考https://vmmhyperv.wordpress.com/2017/08/..原创 2020-07-28 19:42:06 · 1606 阅读 · 0 评论 -
SQL Server 存储(8/8):理解数据文件结构
这段时间谈了很多页,现在我们可以看下这些页在数据文件里是如何组织的。我们都已经知道,SQL Server把数据文件分成8k的页,页是IO的最小操作单位。SQL Server把数据文件里的第1页标记为0。在所有数据库文件里,前面的9个页面(到页号8)都是如下显示一样的顺序,第10个页(页号9)是启动页,用来保存数据库的元数据信息。第1个页,页号0,是文件头(page type 15)。它保存着文件头信息。每个数据文件只有一个文件头页,而且是第0页的位置。文件头页里保存着数据文件信息,例如文..转载 2020-06-16 01:15:28 · 1537 阅读 · 0 评论 -
如何在SQL Server里进行页级别的恢复
今天我将讲下页的一些限制,还有为什么你会喜欢这些限制,同时也会讨厌这些限制。正如你在第2周学到的,数据页始终是8kb 的大小,而且你只能在上面存储8060 bytes。你的记录大小指示你在一个页里可以存储多少记录。当你与像CHAR,INT,DATETIME等定长类型数据类型打交道时,你会发现SQL Server有记录长度不能超过8060 bytes长度(包含7 bytes 的内部行开销)的限制。页面限制——好的一面当你的表少于8列时,你需要(为每条记录)增加额外7 bytes 的内部行开销。对每转载 2020-06-26 12:29:58 · 1511 阅读 · 0 评论 -
SQL Server 事务日志常用SQL
一、查询日志的使用空间1. 查询日志率及当前大小DBCC SQLPERF(LOGSPACE);2. 查询日志文件当前大小及最大大小select db.name as database_name, db.is_auto_shrink_on, db.recovery_model_desc, mf.file_id, mf.type_desc, mf.name as logic_file_name, mf.size*8/1024as s...原创 2020-06-13 12:06:42 · 2772 阅读 · 1 评论 -
SQL Server 如何删除多余的事务日志文件
sqlserver按照严格顺序写入日志文件,如果有两个日志文件,sqlserver只会写满一个之后再写另一个,因此多个日志文件对性能提升并没有什么用处。如果创建了多个日志文件想要删除应该如何处理?下面以full模式为例,sample模式更加简单CREATE DATABASE [TestDB] ON PRIMARY ( NAME = N'TestDB', FILENAME = N'D:\SQL DATA\TestDB.mdf' , SIZE = 4096KB , MAXSIZE = UNLIM翻译 2020-06-26 11:39:03 · 2845 阅读 · 0 评论 -
SQLServer数据库中开启CDC导致“事务日志空间被占满,原因为REPLICATION”的原因分析和解决办法
SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:在执行增删改语句(产生事务日志)的过程中提示,The transaction log for database '***' is full due to 'REPLICATION'(数据库“***”的事务日志已满,原因为“REPLICATION”).CDC以及复制的基本原理粗略地讲,对于日志的使用步骤如下: 1,每当基础表(开启了CDC或者replication的表)产生事务性操作(增删改)之后,对应的事务日志写入日转载 2020-06-04 10:45:53 · 3370 阅读 · 0 评论 -
SQL Server 如何找到存储过程中最耗时的部分
开发反馈有存储过程执行缓慢,影响业务,记录下排查过程。1. 查看sqlserver当前正在执行的会话select * from (SELECT [ Spid ] = er.session_Id, ecid, [ Database ] = DB_NAME(sp.dbid), start_time, DATEDIFF(ms, er.start_time, GETDATE()) 'ms_since_request_start', [原创 2020-05-09 00:21:25 · 2755 阅读 · 0 评论 -
用户看不到SQL Server Agent组件如何处理
开发反馈需要看job执行情况,但登录之后发现看不到SQL Server Agent组件,需要帮忙处理。一、 解决方法登上服务器检查了下SQL Server Agent服务运行正常,使用管理员账号登录能看到该组件。可以猜到这个问题应该跟权限有关,查到官方文档介绍如下:SQL Server使用msdb数据库管理Agent 对象权限,msdb内置三个数据库角色,权限从小到大依次是...原创 2020-05-07 23:40:18 · 4384 阅读 · 0 评论 -
SQL Server中授予用户查看对象定义的权限
在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程、函数、视图、表)的定义权限存。如果是部分存储过程、函数、视图授予查看定义的权限,那么就像下面脚本所示,比较繁琐:GRANT VIEW DEFINITION ONYOUR_PROCEDURE TOUSERNAME;GRANT VIEW DEFINITION ONYOUR_FUNCTION TO...转载 2020-05-03 12:45:01 · 2626 阅读 · 0 评论 -
SQL Server中的动态SQL
动态SQL:code that is executed dynamically。一般是根据用户输入或外部条件动态组合的SQL语句块,能灵活的发挥SQL强大的功能,然而有时候在性能上不如静态SQL,而且使用不恰当,往往会在安全方面存在隐患(SQL 注入式攻击)。动态SQL可以通过EXECUTE 或SP_EXECUTESQL两种方式执行。EXECUTE执行 Transact-SQL 中的...转载 2020-05-02 21:27:34 · 4665 阅读 · 0 评论 -
查看Windows服务器安装了那些SQL Server组件
如何查看Windows服务器安装了那些SQL Server组件呢? 最近就遇到这样一个需求,需要知道Windows服务器是否安装了Replication组件,那么有几种方法查看Windows服务器安装了哪些SQL Server组件呢?下面总结一下这方面的方法,希望对遇到这样问题的人有所帮助!1:通过SQL Server Features Discovery Report查看。...转载 2020-04-29 22:08:32 · 2687 阅读 · 0 评论