write down,forget

SQL Server 中 DELETE 与 TRUNCATE TABLE

<Category: SQL Server>

清空表数据的两种方法:DELETE 与 TRUNCATE TABLE

 

在SQL Server中,每一个操作SQL Server都会做一定的Log记录,比较说Insert,Update 或者Delete事件,每一个操作都会锁定行,然后对行操作做一些记录。

当一个表中的数据行很多的时候,几十万条或更多,那么删除的时候TRUNCATE TABLE则更快,它是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE 速度更快,并且使用更少的系统资源和事务日志资源。

与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:

所用的事务日志空间较少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。

使用的锁通常较少。

当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。

如无例外,在表中不会留有任何页。

执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。

与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义与其索引和其他关联对象一起保留在数据库中。

如果这个表与其他表存在外键关联,则是删除不了的。

Msg 4712, Level 16, State 1, Line 1

Cannot truncate table xxx_primarykey’ because it is being referenced by a FOREIGN KEY constraint.

本文来自: SQL Server 中 DELETE 与 TRUNCATE TABLE

【转】获取SQL Server数据库元数据的方法

<Category: SQL Server, 数据库>

元数据简介

元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据的信息”,日常生活中的图例、图书馆目录卡和名片等都可以看作是元数据。在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义。比如在管理、维护 SQL Server 或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息:

◆某个数据库中的表和视图的个数以及名称;

◆某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等;

◆某个表上定义的约束;

◆某个表上定义的索引以及主键/外键的信息。

下面我们将介绍几种获取元数据的方法。

获取元数据

使用系统存储过程与系统函数访问元数据

获取元数据最常用的方法是使用 SQL Server 提供的系统存储过程与系统函数。

系统存储过程与系统函数在系统表和元数据之间提供了一个抽象层,使得我们不用直接查询系统表就能获得当前数据库对象的元数据。

常用的与元数据有关的系统存储过程有以下一些:

系统存储过程

◆sp_columns 返回指定表或视图的列的详细信息。

◆sp_databases 返回当前服务器上的所有数据库的基本信息。

◆sp_fkeys 若参数为带有主键的表,则返回包含指向该表的外键的所有表;若参数为带有外键的表名,则返回所有同过主键/外键关系与该外键相关联的所有表。

◆sp_pkeys 返回指定表的主键信息。

◆sp_server_info 返回当前服务器的各种特性及其对应取值。

◆sp_sproc_columns 返回指定存储过程的的输入、输出参数的信息。

◆sp_statistics 返回指定的表或索引视图上的所有索引以及统计的信息。

◆sp_stored_procedures 返回当前数据库的存储过程列表,包含系统存储过程。

◆sp_tables 返回当前数据库的所有表和视图,包含系统表。

常用的与元数据有关的系统函数有以下一些:

系统函数

◆COLUMNPROPERTY 返回有关列或过程参数的信息,如是否允许空值,是否为计算列等。

◆COL_LENGTH 返回指定数据库的指定属性值,如是否处于只读模式等。

◆DATABASEPROPERTYEX 返回指定数据库的指定选项或属性的当前设置,如数据库的状态、恢复模型等。

◆OBJECT_ID 返回指定数据库对象名的标识号

◆OBJECT_NAME 返回指定数据库对象标识号的对象名。

◆OBJECTPROPERTY 返回指定数据库对象标识号的有关信息,如是否为表,是否为约束等。

◆fn_listextendedproperty 返回数据库对象的扩展属性值,如对象描述、格式规则、输入掩码等。

由于我们无法直接利用到存储过程与函数的返回结果,因此只有在我们关心的只是查询的结果,而不需要进一步利用这些结果的时候,我们会使用系统存储过程与系统函数来查询元数据。

例如,如果要获得当前服务器上所有数据库的基本信息,我们可以在查询分析器里面运行:

在返回结果中我们可以看到数据库的名称、大小及备注等信息。

但是如果要引用这部分信息,或者存储这部分信息以供后面使用,那么我们必须借助中间表来完成这个操作:
阅读这篇文章的其余部分

本文来自: 【转】获取SQL Server数据库元数据的方法

存储过程加解密,SQLServer2000和SQLserver2005

<Category: SQL Server>

加密篇

阅读这篇文章的其余部分

本文来自: 存储过程加解密,SQLServer2000和SQLserver2005

SQLServer2005的专用管理员连接(DAC)

<Category: SQL Server>

什么是专用管理员连接?
SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。

专用管理员连接有什么用?
即使在 SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL Server,以便执行诊断查询并解决问题。
管理员可以通过 DAC 访问正在运行的 SQL Server Database Engine 实例来排除服务器的故障(即使该服务器已停止响应其他客户端连接)。

专用管理员连接使用限制
(1)为了保证有可用的连接资源,每个 SQL Server 实例只允许使用一个 DAC。如果 DAC 连接已经激活,则通过 DAC 进行连接的任何新请求都将被拒绝,并出现错误 17810。
(2)DAC 最初尝试连接到与登录帐户关联的默认数据库。连接成功后,可以连接到 master 数据库。如果默认数据库离线或不可用,则连接返回错误 4060。但是,如果使用以下命令覆盖默认数据库,改为连接到 master 数据库,则连接会成功:
sqlcmd –A –d master
由于只要启动数据库引擎 实例,就能保证 master 数据库处于可用状态,因此建议使用 DAC 连接到 master 数据库。
阅读这篇文章的其余部分

本文来自: SQLServer2005的专用管理员连接(DAC)

远程桌面T人

<Category: 小道消息>

 mstsc /console /v:IP:端口 例如:mstsc /console /v:192.168.0.1:3389

远程桌面连接(MSTSC.EXE)可以指定一些参数,实现特殊的功能:

1、/console

连接到服务期的控制台会话,只对XP和2003有效,XP的远程协助其实就是这样实现的,使用这个参数可以

直接接管服务器的控制台会话,即使当时已经有用户在使用

2、/v

指定要连接的服务器和端口,默认3389端口可以不写

3、/f

指定全屏幕模式连接

4、/w:

指定远程桌面屏幕的宽度

5、/h:

指定远程桌面屏幕的高度

6、/edit rdpfile.rdp

编辑指定的.rdp配置文件

7、rpdfile.rdp

直接提供一个预先配置好的连接配置文件

8、/?

获取上面的帮助信息

本文来自: 远程桌面T人

创建测试数据的存储过程

<Category: SQL Server>

screenshot
阅读这篇文章的其余部分

本文来自: 创建测试数据的存储过程

查看数据库或表的空间占用情况

<Category: SQL Server>

–查询数据库或表的空间分配情况

Reference:http://msdn.microsoft.com/en-us/library/ms188776.aspx
http://www.nigelrivett.net/SQLAdmin/SpaceUsedAllTables.html

本文来自: 查看数据库或表的空间占用情况

各银行如何快速接通人工

<Category: 未分类>

各行快速接通人工方法:
中信:4008895558 1-1即可 最方便

民生:95568 接通后1-8音乐过后7 输入身份证号码和查询密码后0-6很麻烦

华夏:4006695577 1-0输入身份证号码 较方便但很难接通

招商:02138784800 1-1-9输入身份证号码 较方便而且很好接通

中行:4006695566 1-0输入卡号 0 最垃圾的银行 就他一家需要输入卡号

建行:02138784878 按任意键 输入身份证号码和查询密码 0-3很麻烦 较容易接通

兴业:95561 接通后先按任意键 然后1-#-8即可 很方便 很容易接通

深发:4006695501 9-#即可 很方便 容易接通

浦发:02138784988 1-0-5-# 较方便 较容易接通

交行:4008009888 1 任意键 4-5-0 较方便 较容易接通

工行:95588 国际卡为例 1-6-3-9 容易接通

光大:4008195595 1-9-1 较方便但不容易接通

北京:4006601169 0 方便 容易接通
阅读这篇文章的其余部分

本文来自: 各银行如何快速接通人工

关于phpcms首页缩略图显示不了的bug

<Category: 问题>

前几天碰到phpcms的一个bug,主要问题是当文章缩略图来源为网络图片而非本地图片时,显示警告造成首页幻灯片显示不正常,错误提示如下:

Warning: getimagesize(x:/Hosting/xxx/html/x.cn/http://www.xxx.com/upimg/allimg/090508/1148140.png) [function.getimagesize]: failed to open stream: Invalid argument in x:\Hosting\xxx\html\x.cn\include\global.func.php on line 768
screenshot1
解决办法,修改include\globa.func.php的764行左右,修改下这个函数,如下:

global.func.php下载

本文来自: 关于phpcms首页缩略图显示不了的bug

哈哈,第一个翻译作品【Yves Behar’s supercharged motorcycle design】

<Category: 翻译>

给TED翻译的第一个东东,里面演讲者是天才设计师维斯•贝哈(Yves Behar)和Forrest North(不知道中文是啥),他们介绍了他们当初是怎么认识并一起合作完成了目前世界上速度最快(150英里每小时),外形最酷的电动摩托车。牛XX啊,第一次翻译啊,刚开始翻译的很不到位,语句生硬,太拘泥字句和断句,多亏了每日小炒掌门JuliaD的耐心指导,哈哈,谢谢了。“哎”,虽然juilaD说硬伤不是太多,汗啊,明白了,我要好好学习英格丽系了。
阅读这篇文章的其余部分

本文来自: 哈哈,第一个翻译作品【Yves Behar’s supercharged motorcycle design】