- 浏览: 2057924 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (1409)
- asp/asp.net学习 (241)
- oracle (10)
- delphi (295)
- java (27)
- pb (1)
- 每日点滴 (49)
- 学习方法 (40)
- 思想方面 (104)
- C语言 (5)
- C++ (1)
- 代码重构经验 (5)
- 软件工程 (3)
- 数据库 (99)
- 英语学习 (3)
- mysql (1)
- 该关注的网站或者网页 (42)
- 总结 (7)
- 要去做的事情 (33)
- 算法 (1)
- 网络方面 (29)
- 随感 (96)
- 操作系统 (36)
- UML (12)
- 常用工具的使用 (55)
- 脚本 (7)
- 汇编 (62)
- 数据结构 (2)
- 财务 (38)
- 语文作文 (16)
- 法律 (1)
- 股票 (88)
最新评论
-
devwang_com:
可以,学习了~~
列出文件夹下所有文件夹的树形结构--Dos命令 tree的使用 -
hvang1988:
不管用啊 frxrprt1.PreviewForm.Pare ...
fastReport预览时嵌入到别的窗体 -
00915132:
我也有这个疑问,非常 感 谢
left join加上where条件的困惑 --SQL优化 -
zhuyoulong:
学习了,高效读书
软件架构师要读的书 -
nTalgar:
非常感谢分享!
Application.ProcessMessages用法:
转自:http://nicedayyep.iteye.com/blog/674977
昨天对一测试库要删除所有记录后生成一个备份,本来想自己写个存储过程,想法是从sysobjects表中查出所有用户表,挨个truncate table,实现时发现这样做只能用游标,在网上查了下,MSSQL本身就有这样的游标查询,叫“sp_MSForEachTable ”
CREATE PROCEDURE sp_DeleteAllData
AS
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'
EXEC sp_MSForEachTable 'DELETE FROM ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'
EXEC sp_MSFOREACHTABLE 'SELECT * FROM ?'
GO
上面这个就搞定了。
稍微分析下sp_MSForEachTable 这个存储过程,
create proc sp_MSforeachtable
@command1 nvarchar(2000), @replacechar nchar(1) = N'?', @command2 nvarchar(2000) = null,
@command3 nvarchar(2000) = null, @whereand nvarchar(2000) = null,
@precommand nvarchar(2000) = null, @postcommand nvarchar(2000) = null
as
/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to its own result set */
/* @precommand and @postcommand may be used to force a single result set via a temp table. */
/* Preprocessor won't replace within quotes so have to use str(). */
declare @mscat nvarchar(12)
select @mscat = ltrim(str(convert(int, 0x0002)))
if (@precommand is not null)
exec(@precommand)
/* Create the select */
exec(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' + REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '
+ N' where OBJECTPROPERTY(o.id, N''IsUserTable'') = 1 ' + N' and o.category & ' + @mscat + N' = 0 '
+ @whereand)
declare @retval int
select @retval = @@error
if (@retval = 0)
exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3
if (@retval = 0 and @postcommand is not null)
exec(@postcommand)
return @retval
GO
重点在于定义了一个cursor为hcForEach,然后把set给sp_MSforeach_worker 就行了,而这个存储过程查询条件也很有意思,本来我认为应该以xtype以条件,看过后才知道人家用了OBJECTPROPERTY函数,意义上没变化,不过程序读起来感到优雅和简单,这就是差距啊。
还有一点要说明的它的另一个条件category & 0x0002 =0,看了下联机帮助说是
category | int | 用于发布、约束和标识。 |
在网上google下也没找到有用的信息,不过自己看了下,这个是用二进制做标志位的,第二位如果是1的话就是系统的东西,比如说在2000中存关系图的dtproperties表就是系统表,但是用OBJECTPROPERTY(o.id, 'IsUserTable') = 1且能把这个表查出来,所以加上category这个条件才能更严谨些。2005这个表就没有了,变成了真正的系统表了。
发表评论
-
sql 保留两位小数
2011-09-30 15:25 112851. ROUND(该函数,只是负责四舍五入到两位小数, ... -
Sql获取星期几的方法
2011-09-26 11:14 15911. select Datepart(weekday, ... -
SQL DATEDIFF语法及时间函数
2011-08-11 19:29 1492摘自:http://apps.hi.baidu.com/sha ... -
比较两个数据库的不同 包括表结构 视图 存储过程等
2011-07-22 18:02 1020比较两个数据库的不同 包括表结构 视图 存储过程等 h ... -
SQL Server 2005调试触发器
2011-07-10 18:35 1346摘自:http://blog.csdn.net/zwk_9/a ... -
如何查找所有包含了某个文本的存储过程
2011-06-09 11:16 819select name from sysobjects o, ... -
使用pivot将行转成列
2011-05-17 16:46 1121摘自:http://blog.csdn.net/happy66 ... -
如何监控SQL Server (2005/2008) 的运行状况
2011-04-15 14:01 1176如何监控SQL Server (2005/2008) 的运行状 ... -
SQL中的各种JOIN(inner join,full outer join,left join,right join,cross join )
2011-04-14 13:43 1014SQL中的各种JOIN(inner join,full ... -
TSQL中 Count() 函数使用的一点小技巧
2011-04-09 10:32 1906TSQL中 Count() 函数使用的一点小技巧 ... -
MsSql2005数据库熟悉
2011-04-01 17:32 16032011-4-11. 终于把那个模 ... -
知道了远程服务器的IP,以及端口号 如何连接
2011-04-01 12:33 1652问题描述:知道了远程服务器的IP,以及端口号 如何连接 ... -
varchar(max) 定义最大化 MsSql2005
2011-03-31 10:54 1161在存储过程里: declare @CreateScript ... -
在存储过程里使用N前缀 Mssql
2011-03-31 10:16 20532011-3-31 摘自:Mssql 2005的帮助页 ... -
经典的三表练习 sql
2011-03-25 14:05 1206create table s --学生表( sid in ... -
sql 这样写,有什么好处?函数列在字段里
2011-03-24 18:34 1232表格:aat 两个字段:a,b select dbo.get ... -
批量导出sql server 的视图、表、存储过程脚本
2011-03-18 17:39 3174批量导出sql server 的视图、表、存储过程脚本 ... -
asp.net连接Access SQL SERVER Oracle
2011-03-11 16:14 1167摘自:http://blog.csdn.net/m ... -
left join加上where条件的困惑 --SQL优化
2011-03-10 15:29 36982left join加上where条件的困惑 摘自:http: ... -
sql server行级锁,排它锁,共享锁的使用
2011-03-08 08:36 1473sql server行级锁,排它锁 ...
相关推荐
标题中的“删除MSSQL数据库中的表和清除记录小工具有源代码”表明这是一个用于管理Microsoft SQL Server数据库的工具,其主要功能是帮助用户方便地删除数据库中的表以及清除表内的记录。这样的工具在数据库开发和...
SQL脚本是一系列预先编写好的SQL命令,可以一次性执行多个操作,如创建、修改或删除数据库对象,如数据表、索引、视图等。在SQL Server环境下,生成SQL脚本通常用于备份数据库结构,迁移数据到其他环境,或者进行...
2. 触发器和存储过程:使用它们来监控和控制对数据的访问,比如在插入、更新或删除记录时执行特定操作。 3. 角色和权限管理:精细划分角色,分配合适的权限,避免全局管理员的存在。 4. 安全审计:记录所有的数据库...
"删除"操作使用"DELETE FROM" SQL语句,用于从表中移除特定的记录。这可能需要"WHERE"子句来限制删除的范围。执行删除操作同样依赖于数据库对象的"执行SQL"方法。 "保存"操作在易语言中可能指的是提交当前事务。在...
本文将深入探讨用户管理表的设计,特别是使用Microsoft SQL Server(MSSQL)作为数据库平台。用户管理涉及到权限控制和存储过程,这些都是确保系统安全性和效率的关键要素。 首先,让我们关注用户管理表的设计。一...
可能还包括添加、修改和删除这些实体的记录,以及查询学生的课程、教师的授课情况或特定课程的平均分等。 此外,可能还会涉及到视图(VIEW)、存储过程(STORED PROCEDURE)和触发器(TRIGGER)的编写,这些都是...
1. **日志分析**:工具会读取SQL Server的事务日志,这些日志记录了所有的数据库操作,包括删除操作。通过解析日志,工具可以重建删除操作前后的数据状态。 2. **数据恢复**:找到被删除的数据记录后,工具会尝试把...
MSSQL2生成工具的核心功能就是简化这个过程,它能分析数据库中的表结构和记录,自动生成相应的INSERT、UPDATE或DELETE等SQL语句,帮助用户快速实现数据的增、删、改、查。 对于Oracle数据库,该工具可能支持PL/SQL...
本文将详细探讨如何实现“自动备份MSSQL数据库中所有的数据库”,以及这个过程中涉及的关键技术和注意事项。 MSSQL(Microsoft SQL Server)是一款由微软开发的关系型数据库管理系统,广泛应用于各种规模的企业中。...
- **删除表**:`DROP TABLE tabname`,用于删除表及其所有数据。 - **增加列**:`ALTER TABLE tabname ADD COLUMN col type`,向表中添加新列。 - **删除列**:在MSSQL中,列一旦添加就不能直接删除。 - **创建...
左外连接返回左表的所有记录及右表中匹配的记录,如果右表中没有匹配,则结果为NULL。 ```sql SELECT a.*, b.* FROM table_a LEFT OUTER JOIN table_b ON a.key = b.key; ``` **2. 右外连接(RIGHT OUTER JOIN)**...
`news_log.ldf`是日志文件,记录所有对数据库的事务操作,以确保数据的一致性和完整性。为了部署系统,需要将这些文件与数据库服务器连接,并可能使用`SQL2000创建news.sql`脚本来创建新闻数据表结构。 `SQL2000...
这条语句返回`a`表中的所有记录和`b`表中与之匹配的记录。 #### RIGHT OUTER JOIN ```sql SELECT * FROM a RIGHT OUTER JOIN b ON a.a = b.c; ``` 这条语句返回`b`表中的所有记录和`a`表中与之匹配的记录。 #### ...
左外连接(左连接)的结果集包括连接表的匹配行,同时也包括左表的所有行。即使右表中没有匹配的记录,左表的记录也会出现在结果集中,未匹配的部分会填充NULL值。 以上是对MSSQL常用语句及其特殊用法的一个汇总,...
例如,ELK-Mssql-02-01-01规定了日志的记录和存储方式,以便追踪数据库的操作记录和异常事件。 通信协议是Mssql数据库系统安全的重要组成部分。该规范规定了通信协议的要求,包括加密、身份验证和访问控制等。例如...
本文将基于提供的信息“MSSQL2005中删除重复项”,深入探讨如何有效地识别并删除表中的重复记录。 ### 标题解读:MSSQL2005中删除重复项 #### MSSQL2005简介 Microsoft SQL Server 2005是微软公司推出的一款企业级...
一款真正意义上的MSSQL日志分析和浏览工具,直接解析LDF文件,支持SQL2008,SQL2005,SQL2000. 程序主要功能: 1:\l日志浏览. 用户可以输入指定的日志块序号,程序从指定的日志块往下浏览,可以快速定位需要查看的日志...
- `FULL JOIN`(或`FULL OUTER JOIN`):返回两个表中的所有记录,如果某条记录在其中一个表中没有匹配,则对应位置填充NULL。 6. **子查询**: - 子查询可以在`SELECT`, `FROM`, `WHERE`等子句中嵌套,用来执行...
例如,插入一条新记录可以使用`INSERT INTO`语句,查询数据可以使用`SELECT`语句,更新记录使用`UPDATE`,删除记录使用`DELETE FROM`。 了解了这些基础概念,你就能有效地利用SQL和易语言外部数据库接口进行MSSQL...