SQL Server 切换用户模式

在sql server中,数据库不能同时为单用户模式和只供 dbo 使用模式 可以通过使用 alter database 命令来切换使用: alter database DatabaseName set single_user 该命令限制用户只能逐个访问数据库 alter database DatabaseName set restricted_user 该命令限制只有 db_owner、dbcreator 或 sysadmin 角色的成员才能访问数据库 alter database DatabaseName set multi_user 该命令将数据库的访问权限返回其一般运行状态 在sql server中,数据库不能同时为单用户模式和只供 dbo 使用模式 可以通过使用 alter database 命令来切换使用: alter database […]

[转] 影响SQL server性能的关键三个方面

1 逻辑数据库和表的设计 数据库的逻辑设计、包括表与表之间的关系是优化关系型数据库性能的核心。一个好的逻辑数据库设计可以为 优化数据库和应用程序打下良好的基础。 标准化的数据库逻辑设计包括用多的、有相互关系的窄表来代替很多列的长数据表。下面是一些使用标准化 表的一些好处。 A:由于表窄,因此可以使排序和建立索引更为迅速 B:由于多表,所以多镞的索引成为可能 C:更窄更紧凑的索引 D:每个表中可以有少一些的索引,因此可以提高insert update delete等的速度,因为这些操作在索引 多的情况下会对系统性能产生很大的影响 E:更少的空值和更少的多余值,增加了数据库的紧凑性 由于标准化,所以会增加了在获取数据时引用表的数目和其间的连接关系的复杂性。太多的表和复杂的连接关系会降低服务器的性能,因此在这两者之间需要综合考虑。 定义具有相关关系的主键和外来键时应该注意的事项主要是:用于连接多表的主键和参考的键要有相同的数据类型。

从数据库随机读取数据

示例代码: SQL Server:Select Top * From  表 Order By NewID()   Access  :Select Top * From 表 Order By Rnd(ID)          *说明-Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)  Select Top 10 * From 表 Order BY Rnd(Len(UserName))   MySql:Select * From 表 Order By Rand() Limit […]

C++&OTL调用SQLServer成功

SQL Server 中 DELETE 与 TRUNCATE TABLE

清空表数据的两种方法: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) […]

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

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

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

有关注入的几个SQL

SQL Server临时表

        SQL Server临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。        如果数据库会话创建了本地临时表 #temtable,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了 ##temtable全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该 表,则SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。       如果本地临时表由存储过程创建或由多个用户同时执行的应用程序创建,则 SQL Server 必须能够区分由不同用户创建的表。为此,SQL Server 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 数据库的 sysobjects 表中的临时表,其全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。为了允许追加后缀,为本地临时表指定的表名 table_name 不能超过 116 个字符。      […]