sqlserver

SQLServer访问Oracle查询性能问题解决

馋奶兔 提交于 2020-01-13 08:05:10
1. 问题    系统有个模块,需要查询Oracle数据库中的数据。目前是通过建立链接服务器实现的。    SQLServer访问Oracle实现 可参考这篇文章 http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html    目前的查询语句就是一个简单的带where条件的查询语句,类似如下:    SELECT * FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME WHERE COLUMN1=SID;    存在的问题是查询速度非常慢,前台报超时。所以准备提升下查询的性能 2. 分析   首先,确定远程Oracle的表在筛选字段上是否存在索引。经确认,存在索引。   然后,在SSMS客户端中查看了执行语句的执行计划,如下:      从执行计划可以看出,过程没有和自己设想的那样,原以为SQLServer会将整个查询提交到Oracle服务器执行。而实际在远程查询时,并没有加入where条件,而是将结果返回到本地后,在本地执行筛选(有一个筛选器)   这样速度肯定会非常慢,因为查询没有使用到索引查找,需要将远程数据全部传输到本地后才执行筛选,相当于全表扫描,还多了网络传输的时间。 3. 解决  

Sql Server 完全卸载,卸载干净,Windows 7。

我们两清 提交于 2020-01-12 01:59:41
一般卸载程序的卸载方法无法完全清除SqlServer 导致重装sqlserver报错,下面给大家介绍和讲解如何完全卸载Sql Server。 (此教程使用的系统为Windows 7[Win10,Win8同理]) **重点为第4步往后   软件获取地址: 链接:https://pan.baidu.com/s/1W4_vfqSVxTU1R_cK29eg3Q 提取码:0vlx 如有问题;联系作者QQ:1161493927 交流学习 1.首先点击计算机左下角“开始”,点击“控制面板”,点击“程序”。在程序列表找到“Microsoft SQL Server XXX”XXX代表版本号,右击 选 “卸载 ”。 2.弹出 sqlserver卸载提示,点击 “删除 ”。(如下图) 3.接下来按照提示完全卸载。(如图全选) 4.卸载相关组件(开始—控制面板—卸载程序,右击卸载,将相关组件全部卸载。) 5.卸载不掉的话先使用这个软件清除,之后在卸载(win10请以管理员身份运行,鼠标右击本软件,选择以管理员身份运行) 6,。如遇到有卸载不了的,组件或者Sql server 服务使用这个软件(第5步完了之后使用本软件检查下,点击软件内卸载SQL SERVER 组件(推荐)进行检查,如果有从上往下挨个卸载) 7.删除磁盘里的安装文件(一般数据库默认安装在C盘) 路径“C:\Program Files”删除

SqlServer 内存篇(六)—— sqlserver 2012内存管理新特性

試著忘記壹切 提交于 2020-01-10 23:26:35
一、 内存管理器变化 sqlserver 2005和2008时,8K和大于8K的内存分配严格分开,由两个内存分配管理器分别完成,可能导致buffer pool还有内存,但multi-page部分却不足了。 sqlserver 2012的重大改进之一就是——所有内存请求都通过新的内存管理器完成。 1)新内存管理器支持分配所有大小 至此,single-page allocator和multi-page allocator都将退出历史舞台。 不论内存大小,sqlserver内存管理器使用内存的方式只分为:普通页、锁定页、大内存页三种模型。 2)新内存管理器对某些特定负载进行了优化 3)新内存管理器完全支持NUMA 4)虚拟地址空间管理完全动态,包括32位 5)所有通过内存管理器分配的内存均受max server memory参数控制 6)32位实例不再支持AWE 7)Lock page in memory使用方法大大简化 sqlserver 2012开始,不论版本和处理器类型,只要启动账号有Lock page in memory权限,就可以使用该功能。企业版、商业智能版、标准版无需任何实质和trace flag即可直接使用。 如何看是否启用Lock page in memory? sqlserver错误日志会有相应信息 Using locked pages in the memory

Mysql、Sql Server、Oracle主键自动增长的设置

丶灬走出姿态 提交于 2020-01-09 20:18:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1、把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为 auto_increment 类型,数据库就会自动为主键赋值。例如: create table customers(id int auto_increment primary key not null, name varchar(15)); insert into customers(name) values("name1"),("name2"); select id from customers; 以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值。最后查询表中id字段,查询结果为: 由此可见,一旦把id设为 auto_increment 类型,mysql数据库会自动按递增的方式为主键赋值。 Sql Server 在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如: create table customers(id int identity(1,1) primary key not null, name varchar(15)); insert into customers(name) values('name1'),(

[.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程

人盡茶涼 提交于 2020-01-08 21:34:35
[.net 面向对象程序设计进阶] (21) 反射(Reflection)(下)设计模式中利用反射解耦 本节导读 : 上篇文章简单介绍了 .NET 面向对象中一个重要的技术反射的基本应用,它可以让我们动态的调用一个程序集中的成员,本篇文章将介绍如何将这一重要特性应用到设计模式中,达到 swich …… case,if …… else 带来的耦合问题,让我们的代码更漂亮,更灵活。 读前必备: [.net 面向对象编程基础] ( 9) 类和类的实例 [.net 面向对象编程基础] (16) 接口 [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 1.从一个实例解决问题开始 为了说的通俗易懂一些,本篇从一个常用实例开始,其实用过代码生成器的同学肯定很了解工厂反射模式了,这种模式应用在数据层面,主要解决了一个问题,那就是可以动态更换数据库而不需要改动代码,让我们的代码解耦。下面我们一步一步改进代码,最终实现我们的目标——动态数据访问层设计。 1.1 最简单的数据访问设计 我们创建两个类,一个 User 类,一个 UserSqlServer 类,实现如下: User.cs using System; using System

SQLServer服务的运行与登录

为君一笑 提交于 2020-01-08 21:04:06
文章目录 1 数据库服务的打开 1.1 关于客户端、服务器端的说明 1.2 数据库服务打开和关闭的方式 2 登录到数据库服务器 2.1 使用windows登录方式登录服务器 2.2 使用SQLServer方式登录服务器 1 数据库服务的打开 在我们使用DBMS客户端之前必须首先打开数据库服务SQL Server(默认实例名为MSSQLServer), 运行在服务器端的应用程序主要是用来提供数据的存储、处理和事物等。 1.1 关于客户端、服务器端的说明 客户端: 数据库管理系统(DBMS),应用程序。 服务器端: 安装的数据库服务,数据库管理的核心程序。 两者关系: 客户端和服务器端可以安装的时候完全分离开,一个服务器可以被若干个客户端连接为其提供服务。 1.2 数据库服务打开和关闭的方式 在操作系统的服务中启动和关闭:在cmd中输入 services.msc ,找打SQL Server服务即可进行打开或者关闭。 在运行窗口中使用启动和关闭服务的命令: net start mssqlserver 或者 net stop mssqlserver 进行服务的打开或者关闭,上面的名称为默认实例的名称。 通过 SQL Server Configuration Manager启动和停止 。 2 登录到数据库服务器 服务器名称: 默认实例可以用.或者localhost代替。 命名实例需要采用.

Java工作流引擎节点接收人设置20种规则讲解一

三世轮回 提交于 2020-01-08 16:56:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: oralce,mysql,sqlserver,Informix, PostgreSQL 达梦 接受人规则,就是为了解决下一步发送人的范围所制定的各种规则。审批、生产环境有很多的不确定性,更多的时候需要自动确定接受人的范围,为了适应不同场合下的需要我的制定了如下接收人规则。 概要说明 相关功能: 访问规则处理内容。 节点属性配置: 如下图: 功能入口 解释说明: 就是下一步工作人员的接受人范围处理规则。A运动到B,如何确定B的处理人范围。根据不同的业务场景,CCBPM提供了如下几种模式,您可以根据自动不同的业务背景设置自己的业务规则。 说明: 1, 下列设置类型,都设置当前节点作用于下一步节点。 2, 每一种类型,都有路径自动记忆功能,所说自动记忆功能是当节点第一次向下一个节点投递时,它把要投递的人记录下来。 如果您执行了分配系统就把分配的人员,做为接受人员计算. 可以设置的投递的类型: 为了更好的说明该规则,cc为我们提供了一个流程测试案例,如下图: 该案例详尽的设置了各个模式的方法,请打开相关的节点属性

SqlServer Update触发器判断某个字段的值是否已经更改

若如初见. 提交于 2020-01-08 15:31:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 要求:修改主表中某个字段的值,自动更新子表中的某个字段 我们为了不更改程序,创建一个update触发器。 create trigger [tig_update] on 表名 after update as declare @id int begin if (update(主表列名)) begin select @id=id from inserted update 子表名 set lasttime = GETDATE() where pid = @id end end 效果好像不对, 单用if update(a), 也体现不出效果, 为什么? 如果我们执行 update 主表 set 列名a=原来的值 where id = id 发现也触发这个事件,这是不对的,只有列名a的值发生了改变,我们才能修改子表的数据啊: 我们改为以下的触发器,效果就出来了 create trigger [tig_update] on 表名 after update as declare @id int, @upflag int begin select @upflag = case when a.列名=b.列名 then 0 else 1 end, @id=a.id from deleted a left join inserted

webcat 1.1.0 发布

a 夏天 提交于 2020-01-08 14:35:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 数据库管理软件 webcat 1.1.0 已发布,增加SQL审核,SQL发布,SQL查询编辑器功能,多数据库支持,mysql, oracle, sqlserver, db2, postgresql, derby。 http://www.finderweb.net/webcat.html 来源: oschina 链接: https://my.oschina.net/u/223584/blog/3154818

Java工作流系统关于数据加密流程(MD5数据加密防篡改)

天大地大妈咪最大 提交于 2020-01-07 17:27:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统 流程数据加密 md5 数据保密流程数据防篡改软加密 适配数据库: oralce,mysql,sqlserver,Informix, PostgreSQL 达梦 需求背景 对工作流引擎的数据加密研究, 流程数据的加密方案与实现过程. 1, 流程数据加密是为了防止流程数据被篡改的需要,从而造成对单位的不必要损失。 2, 流程数据篡改是具有管理员身份与非法入侵者,尤其是防范业务人员与具有系统管理员结合做坏事情。 比如: xxx公司在xx年曾经出现过这样的情况, 业务人员与管理员勾结,导致单位200万元损失,虽然最后查出来,罚款判刑,但是这是事后处理. 3, 并非所有的流程数据都需要加密, 比如请假流程就不需要,但是报销或者其它具有敏感数据的流程就需要了。 4, 被篡改后的数据需要警报,并写入log日志,还要不能被执行下去。 5, 要求每个节点的数据都要加密,整体流程数据也要加密。 处理方案: 1, 在流程中增加一个属性 IsMD5 是否要加密. 默认是否, 不加密. 2, 用户信息中包括一个盐值,用于后期的加密运算。 3, 凡是加密过的流程在每个节点表单上增加字段MD5