
sqlserver
lnc2003
这个作者很懒,什么都没留下…
展开
-
Windows 不能在 本地计算机 启动 SQL Server 服务 错误代码126
在使用SQL2005(或2008)是可能会遇到错误提示:“Windows 不能在 本地计算机 启动 SQL Server 。有关更多信息,查阅系统事件日志。如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码126 ”解决方法:在2005(2008)的“配置工具”中有个“SQL Server Configuration Manager”--转载 2015-04-08 10:02:18 · 1155 阅读 · 0 评论 -
SQL Server如何限制IP登陆:登陆触发器的运用(2)
(二) 有些时候,你数据库可能有许多个登陆帐号,而你更希望的是限制IP,而登陆名跟IP并没有直接的关联,那这应该怎么实现呢?首先创建一个Logon_DB数据库,再创建一个ValidIP表,在表中插入和192.168.1.195,表示允许本地和IP为192.168.1.195进行登陆,登陆的帐号属于服务器角色:sysadmin。--Script3:--创建测试数据库USE MASTER转载 2017-01-21 09:47:02 · 381 阅读 · 0 评论 -
SQL Server如何限制IP登陆:登陆触发器的运用(3)
现在时间是17:20左右,我使用nightworker登陆数据库,这违反了登陆触发器:tr_logon_CheckTime,所以提示Figure5的错误信息,并且在LogonBlockedLog拦截日志表中出现了一条记录,这个表可以帮助我们更好的了解登陆账号的登陆信息。(Figure5:nightworker用户登陆错误信息)(Figure6:拦截日志表)(四) 我们进一步模仿转载 2017-01-21 09:48:14 · 364 阅读 · 0 评论 -
SQL Server如何限制IP登陆:登陆触发器的运用(4)
(五) 对上面的再延伸一点,如果想类似Host like 192.168.1.* 这样进行范围的过滤,那这又应该怎么实现呢?可以使用CLR扩展函数对IP进行判断,后面会讲到这种方式。这里使用SQL就能解决的方法,仅供参考。开放登录名nightworker在内网所有IP:192.168.1.* 访问本机的权限。查看本栏目更多精彩内容:http://www.bianceng.cn/databa转载 2017-01-21 09:49:21 · 981 阅读 · 0 评论 -
SQL Server如何限制IP登陆:登陆触发器的运用(5)
(六) 这里使用CLR扩展函数对上面类似Host like 192.168.1.* 的实现,关于CLR的一些基础可以参考:SQL Server扩展函数的基本概念新建程序集(引用一个写好的SQLCLR.dll文件)之后执行下面的SQL脚本创建标量值函数,创建成功后效果如下图所示:--Script7:--CLR实现IP范围判断CREATE FUNCTION [dbo].[RegexIsMa转载 2017-01-21 09:49:58 · 365 阅读 · 0 评论 -
SQL Server 中 ROWLOCK 行级锁
一、ROWLOCK的使用1、ROWLOCK行级锁确保,在用户取得被更新的行,到该行进行更新,这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性,又能提高数据操作的并发性。2、ROWLOCK告诉SQL Server只使用行级锁,ROWLOCK语法可以使用在SELECT,UPDATE和DELETE语句中。3、例如select语句中 A 连接中执行 SET TRAN转载 2017-03-07 10:15:37 · 8323 阅读 · 0 评论 -
SQL Server中各类型的锁(LOCK)
下面将为您介绍SQL Server中锁(LOCK)的各种类型,供您参考,希望对您学习SQL Server会有所帮助。1.HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。2.NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句。3.PAGLOCK:指定添加页转载 2017-03-07 10:19:52 · 1483 阅读 · 0 评论 -
SQL中不同的参数使用不同的条件
在编写存储过程的时候有一需求,当参数@GetOrderType=0的时候,取 Dispensing_Indicator=0的记录当参数@GetOrderType=1的时候,取 Dispensing_Indicator>0的记录SQL语句又不能这么写(报语法错误):DECLARE @GetOrderType INT=0 --0未执行,1已执行SELECT*FROM H原创 2017-06-20 15:11:06 · 3086 阅读 · 0 评论 -
Sql查询按某字段值排序
今天,sql语句的排序,有了特殊需求,不止是 asc,desc 简单的正序、倒序排,需要根据字段的值,来执行排序。可使用如下方式:order by case `state` when 2 then 1 // 当值为2,排在第一个 when 1 then 2 // 当值为1,排在第二个 when转载 2017-11-02 15:43:48 · 4424 阅读 · 0 评论 -
SQLServer两张表筛选相同数据和不同数据
SQLServer两张表筛选相同数据和不同数据方法一: select distinct A.ID from A where A.ID not in (select ID from B)方法二:select A.ID from A left join B on A.ID=B.ID where B.ID is null方法三:select *转载 2017-11-16 11:23:37 · 23511 阅读 · 0 评论 -
SQL Server-使用Merge语句实现表数据之间的对比同步
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等。包括在 SSIS Package 中也可以通过 Lookup, Condition Split 等多种 Task 的组合来实现表数据之间的同步。在这里 "同步" 的意思是指每次执行一段代码的时候能够确保 A 表的数据和 B 表的数据始终相同。可以通过 SQ转载 2017-11-16 14:12:42 · 421 阅读 · 0 评论 -
sqlserver查询数据的所有表名和行数
//查询所有表明 select name from sysobjects where xtype='u'select * from sys.tables //查询数据库中所有的表名及行数SELECT a.name, b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE (a.type =...转载 2018-08-21 13:24:05 · 4207 阅读 · 0 评论 -
SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样可以省去很多自定义的代码,需要的朋友可以参考下。 在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XM...转载 2018-08-21 15:06:22 · 843 阅读 · 0 评论 -
SQL Server中Rowcount与@@Rowcount的用法
rowcount的用法:rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,比如下面的示例,set rowcount 10select * from 表A这样的查询只会返回表A中的前10条数据。它和 "select top 10 * from 表A" 的作用一样。注意一点,set rowcount 的设置会在整个会话中有效。比如下面的sql示例:set ro...转载 2018-08-24 16:17:43 · 472 阅读 · 0 评论 -
在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
其实本来只想找一个方法能查询一下 数据库 的大小,没想到这个方法还能查询数据库中 各个数据表 的大小,嗯,挺好玩的,记录一下。MSDN资料:https://msdn.microsoft.com/zh-cn/library/ms188776.aspx如果只是查询数据库的大小的话,直接使用以下语句即可:EXEC sp_spaceused为了保证查询结果的实时性,推荐使用 @updat...转载 2018-12-03 15:12:41 · 480 阅读 · 0 评论 -
SQL Server如何限制IP登陆:登陆触发器的运用
一、背景在MySQL的mysql.User表保存了登陆用户的权限信息,Host和User字段则是关于登陆IP的限制。但是在SQL Server没有这样一个表,那SQL Server有什么办法可以实现类似的安全控制的功能呢?SQL Server 包括三种常规类型的触发器:DML触发器、DDL触发器和登录触发器。DML触发器是比较常使用的,它通常在表或视图中修改数据(INSERT、UPDATE转载 2017-01-21 09:45:10 · 2646 阅读 · 0 评论 -
sql LeftJoin 用法详解
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录详解:使用LEFT JOIN查询出的记录数并不是等于左表中的记录数,而是把左表中的所有数据都查询出来与右边进行匹配,如果进行连接的字段(ON 后的字段)在左表中的一个值在右表中有N个值与其对应的话,查出来的记录至少是:左表记录数+(N-1)例如:比如左表 a 1 2 3原创 2017-02-09 12:58:31 · 8123 阅读 · 0 评论 -
SQLSERVER排查CPU占用高的情况
SQLSERVER排查CPU占用高的情况今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位64G内存,16核CPU硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库实例里有多个数据库 现象他说是这几天才出现的,而且在每天的某一个时间段才会出现CPU占用高的情况内存占用不太转载 2016-06-21 22:06:08 · 655 阅读 · 0 评论 -
数据库的备份语句
利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点:1. 获取SQL Server服务器上的默认目录2. 备份SQL语句的使用3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理4. 作业创建SQL语句的使用 /*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名转载 2015-04-29 14:02:15 · 738 阅读 · 0 评论 -
sqlserver 中使用透明数据加密(Transparent Data Encryption)加密数据库
在现实环境中,我们会遇到数据库备份磁盘丢失或者被盗的情况,此时恶意破坏方只需还原或者附加数据库即可浏览数据。接下来我将介绍透明数据加密(Transparent Data Encryption)的方法来保护你的数据库。如果数据A,使用TDE加密之后,即时恶意破坏方有了备份磁盘,也不能还原或者附加,这是因为数据库使用了被证书保护的加密数据密钥。 1.什么是TDE转载 2015-04-29 16:07:24 · 1678 阅读 · 0 评论 -
带密码数据库备份和恢复语句
1.备份:USE master GO Backup DATABASE TEST1 To disk='D:\201504291415.bak' WITH mediapassword='1234567890' ,PASSWORD='1234567890' GO2:恢复: RESTORE DATABASE TEST1 FROM DISK = 'D:\2015042原创 2015-04-29 14:19:00 · 511 阅读 · 0 评论 -
透明数据加密(TDE)库的备份和还原实测
具体操作步骤:一.首先在服务器上建立加密。1.主数据库上创建数据库主钥.USE master GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '123456789'2.创建基于服务器的证书CREATE CERTIFICATE TEST1Cert WITH SUBJECT = 'My DEK Certificat原创 2015-04-29 17:56:26 · 1226 阅读 · 0 评论 -
透明数据加密(TDE)库的备份和还原
对于包含敏感数据的库,要实现备份加密。即备份文件别人拿到也不能还原和查看其中的数据。想到TDE(Transparent Data Encryption)。TDE MSDN 说明:“透明数据加密”(TDE) 可对数据和日志文件执行实时 I/O 加密和解密。这种加密使用数据库加密密钥 (DEK),该密钥存储在数据库引导记录中以供恢复时使用。DEK 是使用存储在服务器的 master 数转载 2015-04-29 13:40:39 · 914 阅读 · 0 评论 -
SQLSERVER创建维护计划失败时解决办法
1.创建维护计划时提示如下错误:创建维护计划“whjh1” (错误)消息创建维护计划失败。------------------------------其他信息:从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} 的 COM 组件创建实例失败,原因是出现以下错误: c001f011。 (Micros原创 2015-06-17 10:37:52 · 18021 阅读 · 0 评论 -
使用SQL Server时必须注意的10个特性:IN中的多重字段
你不能在IN中使用多个字段。如下查询:SELECT *FROM mytableWHERE (col1, col2) IN(SELECT col1, col2FROM othertable)这不会正常工作。这一行为违反了标准并且是特定于SQL Server的。要解决这一问题,可以用EXISTS来代替IN如下:SELECT *FROM mytable m转载 2015-05-22 17:58:50 · 4551 阅读 · 0 评论 -
SQLSERVER2008导出数据错误 无法在只读列中插入数据
从SQL2008数据库导出数据到另外一个数据库,如果数据库中有自增主键,那么在导出的时候会报一个错误 用SQL2008导入数据,选择数据源为SQL2000的数据库在导入过程中出现的错误~详细错误:- 正在验证 (错误)消息错误 0xc0202049: 数据流任务: 无法在只读列“I_AID”中插入数据。 (SQL Server 导入和导出向导)转载 2015-05-25 11:16:22 · 2613 阅读 · 0 评论 -
SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name2.查询某个数据库中所有的表名: SELECT Name FROM SysObjects Where XType='U' ORDER BY Name3.查询表结构信息: 1 SELECT (case when a转载 2015-05-25 11:17:22 · 1198 阅读 · 0 评论 -
Oracle,SQLServer的空值(null)判断及数值转换
sql server替换null:isnull(arg,value)如:select isnull(salary,0.0) from emp 如果salary为null的话,用0.0替换与null比较: is not null,is null 如 select * from emp where salary is null salary 等于null如转载 2015-08-10 15:30:14 · 8141 阅读 · 0 评论 -
SQLSERVER语句块实例
if EXISTS( SELECT * FROM PATS_ORDER WHERE ORDER_NO=@ORDER_NO ) BEGIN原创 2015-12-30 10:10:34 · 2213 阅读 · 0 评论 -
数据库日志文件自动增长导致连接超时的分析
1、现象、问题描述 客户反映某客户端登陆不了,客户端程序日志显示“连接数据库超时”;检查对应的数据库服务器,日志显示“Autogrow of file '某数据库日志文件' in database '某数据库' was cancelled by user or timed out after 2391 milliseconds. Use ALTER DATABASE to set转载 2016-06-17 11:34:11 · 1428 阅读 · 0 评论 -
SQLSERVER 2008 R2如何清理日志
USE DBNAMEGO--查看数据库的recovery_model_desc类型 SELECT NAME, recovery_model_desc FROM sys.databases--如果是FULL类型,修改为SIMPLE类型 ALTER DATABASE DBNAME SET Recovery simple--收缩日志文件大小(单位是M)转载 2016-06-17 12:23:02 · 5639 阅读 · 0 评论 -
SQL Server 2008 R2占用内存越来越大两种解决方法
SQL Server 2008 R2运行越久,占用内存会越来越大。第一种:有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定期执行下边批处理:net stop sqlserveragentnet stop mssqlservernet start mssqlservernet start sqlserv转载 2016-06-21 21:47:45 · 11309 阅读 · 0 评论 -
SQL高级查询之over(partition by...)
row_number() OVER (PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的). rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内). dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下ro...转载 2019-03-14 16:10:50 · 1101 阅读 · 0 评论