
SQL Server
SQL Server 数据库
清山博客
多闻阙疑,慎言其余,则寡尤;多见阙殆,慎行其余,则寡悔。言寡尤,行寡悔。
展开
-
SQL Server查看索引碎片率并进行整理
-第1步:查找碎片大于某个阈值的索引(此处阈值90)--第2步:重新组织索引(把表名复制进来,调整阈值)把红色部分替换为你对应的值。转载 2023-10-18 11:10:23 · 1530 阅读 · 0 评论 -
在SQL2008查找某数据库中的列是否存在某个值
--SQL2008查找某数据库中的列是否存在某个值create proc spFind_Column_In_DB( @type int,--类型:1为文字类型、2为数值类型 @str nvarchar(100)--需要搜索的名字)as --创建临时表存放结果 create table #tbl(PK int identity primary key ,tbl转载 2015-08-10 10:49:49 · 4821 阅读 · 0 评论 -
计算数据库中各个表的数据量和每行记录所占用空间
CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR(500) , rowsinfo BIGINT , reserved VARCHAR(20) , datainfo VARCHAR(20) , index_size VARCHAR(20) , unused VARCHAR(2原创 2015-08-10 10:54:04 · 4707 阅读 · 1 评论 -
MS SQLServer 批量附加数据库
Use masterGoif object_ID('[sp_AttchDataBase]') is not null Drop Procedure [sp_AttchDataBase]GO/*附加数据库(V2.0) Andy 2011-7-8 */Create Procedure sp_AttchDataBase( @Path nvarchar(1024), @DataFile转载 2015-07-13 11:12:55 · 6045 阅读 · 0 评论 -
修改MS SQL忽略大小写
第一步:数据库-》属性-》选项-》限制访问:SINGLE_USER第二步:ALTER DATABASE [数据库名称] collate Chinese_PRC_CI_AI第三步:数据库-》属性-》选项-》限制访问:MULTI_USER原创 2015-06-19 09:18:23 · 1539 阅读 · 0 评论 -
MS SQL数据批量备份还原(适用于MS SQL 2005+)
我们知道通过Sql代理,可以实现数据库的定时备份功能;当数据库里的数据库很多时,备份一个数据库需要建立对应的定时作业,相对来说比较麻烦;还好,微软自带的osql工具,比较实用,通过在命令行里里输入命令,也能实现数据库备份的功能;如果能通过sql语句来生成一个批处理文件,那就方便了;下面即是生成批处理文件的sql脚本,通过它可以实现:运行一个批处理文件,备份数据库服务器上的所原创 2015-03-10 14:32:59 · 3483 阅读 · 0 评论 -
MS SQL 合并结果集并求和
业务情景:有这样一张表:其中Id列为表主键,Name为用户名,State为记录的状态值,Note为状态的说明,方便阅读。需求描述:需要查询出这样的结果:某个人某种状态的记录数,如:张三,待审核记录数,审核中记录数,审核通过记录数;大概像这样:解决方案:1.建表和初始化测试数据: --1.建表语句CREATE TABLE [dbo].[Content](原创 2015-02-13 10:59:17 · 13221 阅读 · 0 评论 -
sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询
执行sql语句:select * from (select * from tab where ID>20 order by userID desc) as a order by date desc逻辑上看着挺对 但是报错:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。转载 2014-04-08 10:48:22 · 58850 阅读 · 3 评论 -
ASP.NET 数据库访问通用工具
在工作中,有很多项目已上线后,想直接访问客户数据库服务器shi原创 2014-05-02 16:55:08 · 3404 阅读 · 0 评论 -
SQL相关路径查询脚本
--1.查询机器名SELECT @@servername AS 机器名称--查询已安装的SQL实例名SELECT *FROM Sys.Servers--2.查询SQL安装路径DECLARE @installPath VARCHAR(200) EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE原创 2014-03-25 09:18:12 · 4728 阅读 · 0 评论 -
MS SQL表字段自增相关的脚本
--查询表是否有自增字段SELECT OBJECTPROPERTY(OBJECT_ID('[表名]'), 'TableHasIdentity')--查询表的自增字段SELECT COLUMN_NAMEFROM INFORMATION_SCHEMA.columnsWHERE TABLE_NAME = '[表名]' AND COLUMNPROPERTY原创 2014-03-22 23:16:32 · 1618 阅读 · 0 评论 -
C#如何判断操作系统位数是32位还是64位
方法一:对于C#来说,调用WMI是一种简单易行的方式。我们可以用Win32_Processor类里面的AddressWidth属性来表示系统的位宽。AddressWidth的值受CPU和操作系统的双重影响。具体的值如下面的表格所示: 32bit OS64bit OS32bit CPUAddressWidth = 32N/A转载 2014-03-18 11:09:20 · 6903 阅读 · 0 评论 -
Sql UNION 合并多个结果集并排序
1.建表语句及测试数据: --创建表ACREATE TABLE A( A1 int NULL, A2 nvArchAr(50) NULL, A3 decimAl(18, 0) NULL) --测试数据INSERT INTO A VALUES (1,'A1',1)INSERT INTO A VALUES (2,'A2',1)INSERT INTO A VALUES (3,'A3',原创 2013-12-03 20:14:13 · 22650 阅读 · 0 评论 -
SQL Server 2008、SQL Server 2008R2 自动备份数据库
让SQL Server 2008自动备份数据库,需要建立一个SQL Server作业,并启动SQL Server代理,使该作业定期运行。具体来说,可以按以下步骤进行:一、打开SQL Server Management Studio,在对象资源管理器中,确认SQL Server代理已启动,若没有,右击SQL Server代理节点,点击“启动”。二、展开SQL Server 代转载 2013-10-18 10:56:32 · 8174 阅读 · 0 评论 -
SQL Server判断数据库、表、存储过程、函数是否存在
--1.判断数据库是否存在IF EXISTS ( SELECT * FROM sys.databases WHERE NAME = '[数据库名]' ) DROP DATABASE [数据库名]--2.判断表是否存在IF EXISTS ( SELECT * FROM sysobjects转载 2013-06-08 21:11:34 · 2503 阅读 · 0 评论 -
SQL 查询结果为 XML
表原始数据:--原始数据SELECT OrderNO,CreateDate,Username,Address FROM Whir_Order_OrderInfo--1.AUTO模式SELECT OrderNO,CreateDate,Username,AddressFROM Whir_Order_OrderInfo FOR XML AUTO, XM原创 2013-07-21 11:45:06 · 2250 阅读 · 0 评论 -
在SQL Server中创建用户角色及授权(使用SQL语句)
正文要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:获得准许连接 SQL Server 服务器的权利;获得访问特定数据库中数据的权利(select, update, delete, create table ...)。假设,我们准备建立一个 dba 数据库帐户,用来管理数据库 mydb。1. 首先在 SQL Server 服务器级别,创转载 2015-08-15 21:55:39 · 69771 阅读 · 5 评论 -
MS SQL执行大脚本文件时,提示“内存不足”的解决办法
当客户服务器不允许直接备份时,往往通过导出数据库脚本的方式来部署-还原数据库,但是当数据库导出脚本很大,用Microsoft SQL Server Management Studio执行脚本时,,往往会遇到“内存不足”的提示。原创 2015-08-03 20:57:01 · 21045 阅读 · 5 评论 -
如何让SQLServer用户只能看到自己拥有权限的库
以SQL Server 2012 为例:图是部分数据库的截图, 我们执行:1DENYVIEWany DATABASE to PUBLIC;然后给Best库的Best用户执行:1ALTERA原创 2015-08-18 13:18:57 · 6242 阅读 · 0 评论 -
SQL Server 索引碎片整理
--1.查看碎片SELECT DB_NAME() AS DatbaseName , SCHEMA_NAME(o.Schema_ID) AS SchemaName , OBJECT_NAME(s.[object_id]) AS TableName , i.name AS IndexName , ROUND(s.avg_fragme...转载 2019-08-15 11:16:10 · 2830 阅读 · 0 评论 -
SQLServer 计算两个日期间的工作日(排除周六和周日,不排除节假日)
CREATE FUNCTION GetWorkDays ( @dt_begin DATETIME , --计算的开始日期 @dt_end DATETIME --计算的结束日期 )RETURNS INTAS BEGIN DECLARE @workday INT , @i INT , ...转载 2019-08-14 16:52:19 · 3839 阅读 · 0 评论 -
登录名 '***' 拥有一个或多个数据库。在删除该登录名之前,请更改相应数据库的所有者。 (Microsoft SQL Server,错误: 15174)
问题描述:在删除数据库用户时,提示:标题: Microsoft SQL Server Management Studio登录名 '***' 拥有一个或多个数据库。在删除该登录名之前,请更改相应数据库的所有者。 (Microsoft SQL Server,错误: 15174)解决办法:假设要删除的用户名为:[RECT],1.找出所有dbowner为RCET的数据库,并产生修改d...转载 2018-09-09 15:38:54 · 4433 阅读 · 0 评论 -
SQL Server 2008 R2 通过证书配置数据库镜像
SQL Server 2008 R2数据库镜像功能可以使数据库进行实时备份,当主体数据库出现问题后,可以迅速切换到备用数据库,提高了数据库的可用性。一、工作原理 数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎 服务器实例上。 通常,这些服务器实例驻留在不同位置的计算机上。 启动数据库上的数据库镜像操作时,在这些服务器实例之间形成一种关系,称为...原创 2018-07-02 15:00:41 · 3215 阅读 · 0 评论 -
MS SQLSERVER删除重复数据且只保留一条
背景:表Per_CheckIn,主要字段:pid--身份证号,checktime-刷身份证时间,由于误操作,导致了重复记录产生,现需将pid和checktime一样的记录删除。具体表结构:CREATE TABLE [Per_CheckIn]( [id] [INT] IDENTITY(1,1) NOT NULL, [pid] [CHAR](18) NULL, [pname] [NVARCHAR...原创 2018-06-11 12:34:43 · 6137 阅读 · 0 评论 -
MSSQL查询含有***字段的所有表
MSSQL查询含有指定字段的所有表SELECT a.name, c.nameFROM sysobjects a INNER JOIN syscolumns c ON ( a.id = c.id )WHERE c.name LIKE '%loginid%'ORDER BY a.name asc将loginid替换为指定的字段即可。...原创 2018-04-09 16:46:59 · 2631 阅读 · 0 评论 -
查询SQL启动以来数据库的IO读写情况
脚本:SELECT db.name AS 数据库, f.fileid AS 文件Id, f.filename AS 文件路径, i.num_of_reads AS 读取次数, i.num_of_bytes_read 读取总字节数, i.io_stall_read_ms '等待读取时间(毫秒)',转载 2018-01-17 10:03:26 · 3564 阅读 · 0 评论 -
SQL Server 验证身份证号码准确性
/*******************************************************************函数名称:IsvalidIDCard()参数:@IDCardNo string 身份证号码返回值: bit 是否有效功能描述:判断身份证号码是否合法备注:目前中国的身份证号码有18位和15位.1,18位身份证号码的组成:6位地区编转载 2017-05-16 11:16:53 · 9354 阅读 · 0 评论 -
SQLServer 时间格式化
背景知识:SQL Server自带的Convert函数,可以将日期类型的字段按照指定的格式转换为字符串格式,您可以将以下脚本复制到查询分析器执行;DECLARE @now datetimeSET @now = GETDATE()select convert(nvarchar(MAX), @now, 0) as output, 0 as style原创 2016-07-06 11:37:28 · 4335 阅读 · 0 评论 -
查看sql server系统表信息
SELECT * FROM sys.sysaltfiles --主数据库保存数据库的文件SELECT * FROM sys.syscharsets --主数据库字符集与排序顺序SELECT * FROM sys.sysconfigures --主数据库配置选项SELECT * FROM sys.sysconstraints --每转载 2015-10-09 10:05:34 · 4740 阅读 · 1 评论 -
SQL Server 2008 R2 清空数据库中ldf日志文件
/************************************************************ * Sql Server 2008 R2 清空数据库中ldf日志文件 * 将Whir_InternalSystem替换为您要操作的数据库即可 *******************************************************原创 2015-09-29 13:05:28 · 8615 阅读 · 0 评论 -
SQL Server数据库备份还原时,提示“数据库正在使用”的解决办法
问题一描述:SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样问题二描述:在对SQL Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权。(Microsoft.SqlServer.Smo)。出现此问题的原因是在还原数据库时,有其他用户正在使用数据库。还原数据库要求数原创 2012-11-21 19:29:32 · 79305 阅读 · 8 评论 -
数据库xxx已打开,并且一次只能有一个用户访问。 (Microsoft SQL Server,错误: 924)
操作数据库失败,提示如下错误:数据库xxx已打开,并且一次只能有一个用户访问。 (Microsoft SQL Server,错误: 924) 重启数据库问题仍然存在。可执行以下sql解决:USE master; GODECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPI转载 2015-08-19 15:52:44 · 18726 阅读 · 0 评论 -
查询SQL Server执行过的SQL语句
SELECTTOP1000ST.textAS'执行的SQL语句',QS.execution_countAS'执行次数',QS.total_elapsed_timeAS'耗时',QS.total_logical_readsAS'逻辑读取次数',QS.total_logi原创 2015-09-01 16:35:17 · 21794 阅读 · 1 评论 -
SQL Like中的逗号分隔符
SQL Like中的逗号分隔符 在与数据库交互的过程中,我们经常需要把一串ID组成的字符串当作参数传给存储过程获取数据。很多时候我们希望把这个字符串转成集合以方便用于in操作。 有两种方式可以方便地把这个以某种符号分隔的ID字符串转成临时表。 方式一:通过charindex和substring。 代码create function func_spl转载 2013-07-19 16:25:33 · 2576 阅读 · 0 评论 -
SQL查询:主从表 报表方式显示
--测试表与测试数据CREATE TABLE test_main (id INT,value VARCHAR(10),PRIMARY KEY(id));-- 创建测试子表.CREATE TABLE test_sub (id INT,main_id INT,value VARCHAR(10),PRIMARY KEY(id));-- 插入测试主表数转载 2013-04-16 10:19:20 · 4836 阅读 · 2 评论 -
SQL Update 语句中使用别名
eg:update Order set Order.DeliverStatus=2 from PE_Orders Order WHERE Order.InputTime原创 2011-05-19 14:55:00 · 4562 阅读 · 0 评论 -
异常为"当IDENTITY_INSERT设置为OFF时" 的解决
<br /><br />当 IDENTITY_INSERT 设置为 OFF 时,不能向表"A" 中的标识列插入显示值。<br />解决方法:<br />1.有一项数据(message_id)如是自动添写的。把那列删掉就可以写进去了。 具体为:<br />原始:"insert into user_message(message_id,user_id,message_content) Values(11,333,'hahaha')"; //报错<br />改成:"insert into user_messag原创 2011-02-18 10:27:00 · 69696 阅读 · 8 评论 -
select SCOPE_IDENTITY()用法
<br /><br />select SCOPE_IDENTITY()<br />返回上面操作的数据表最后row的IDENTITY 列的值;<br />返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。<br />SELECT @@IDENTITY<br />返回上面操作最后一个数据表的最后row的IDENTITY 列的值;<br />原创 2010-11-07 16:26:00 · 24841 阅读 · 0 评论 -
SQl 语句(常见) 新建,删除,修改表结构(转载)
SQl 语句(常见) 新建,删除,修改表结构2006-6-15 15:58:25新建表:create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default '默认值' null ,[字段2] ntext null ,[字段3] datetime,[字段4] money null ,[字段5] int default 0,[字段6] Decimal (12,4) default 0,[字段7] image转载 2010-11-06 17:06:00 · 1390 阅读 · 0 评论 -
查询SQLServer数据库表及字段的所有信息脚本
SELECT 表名=CASE WHEN C.column_id=1 THEN O.name ELSE N'' END, 表说明=ISNULL(CASE WHEN C.column_id=1 THEN PTB.[value] END,N''), 字段序号=C.column_id, 字段名=C.name, 主键=ISNULL(IDX.PrimaryKey,N''), 标识=CASE WHEN C.is_identity=1 THEN N'原创 2010-10-30 11:14:00 · 1691 阅读 · 1 评论