SQLserver删除某数据库中所有表实现思路

方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下
复制代码 代码如下:
--删除所有约束
DECLARE c1 cursor for
select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; '
from sysobjects
where xtype ='F'
open c1
declare @c1 varchar(8000)
fetch nextfrom c1 into@c1
while(@@fetch_status=0)
begin
exec(@c1)
fetch nextfrom c1 into@c1
end
close c1
deallocate c1
--删除数据库所有表
declare @tname varchar(8000)
set@tname=''
select@tname=@tname+Name+','from sysobjects where xtype='U'
select@tname='drop table '+ left(@tname,len(@tname)-1)
exec(@tname)

然后清空数据库中的所有表:
如果需要删除存储过程等只需要将上面的做如下修改就行了的where xtype='U' 改成 where xtype='P',drop table 改成 drop Procedure

sysobjects的xtype代表含义:

在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

列名 数据类型 描述
name sysname 对象名。
Id int 对象标识号。
xtype char(2) 对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程

uid smallint 所有者对象的用户 ID。
info smallint 保留。仅限内部使用。
status int 保留。仅限内部使用。
base_schema_
ver int 保留。仅限内部使用。
replinfo int 保留。供复制使用。
parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。
crdate datetime 对象的创建日期。
ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。
schema_ver int 版本号,该版本号在每次表的架构更改时都增加。
stats_schema_
ver int 保留。仅限内部使用。
type char(2) 对象类型。可以是下列值之一:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程
userstat smallint 保留。
sysstat smallint 内部状态信息。
indexdel smallint 保留。
refdate datetime 留作以后使用。
version int 留作以后使用。
deltrig int 保留。
instrig int 保留。
updtrig int 保留。
seltrig int 保留。
category int 用于发布、约束和标识。
cache smallint 保留。

时间: 2024-10-26 20:26:14

SQLserver删除某数据库中所有表实现思路的相关文章

SQLserver删除某数据库中所有表实现思路_MsSql

方便删除数据库中所有的数据表,清空数据库,有些有约束,不能直接delete,需要先删除库中的约束,代码如下 复制代码 代码如下: --删除所有约束 DECLARE c1 cursor for select'alter table ['+ object_name(parent_obj)+'] drop constraint ['+name+']; ' from sysobjects where xtype ='F' open c1 declare @c1 varchar(8000) fetch n

存储过程-如何删除sybase数据库中某个用户所拥有的全部对象

问题描述 如何删除sybase数据库中某个用户所拥有的全部对象 如何删除sybase数据库中某个用户所拥有的全部对象,可以写一个存储过程来实现

sql server-sqlserver中导入数据库后,把由windowds验证改成sqlserver后,数据库中的表消失

问题描述 sqlserver中导入数据库后,把由windowds验证改成sqlserver后,数据库中的表消失 解决方案 数据库选对了吗?如果选不对,肯定找不到表的 解决方案二: 新手表示没遇到过这种问题 解决方案三: 用windows账号重新登陆查看下表是否真的消失.然后检查下你使用的sql server账号的权限.

删除Access数据库中的空记录

  用零长度字符指示不存在数据 若要在 Microsoft Access 数据库中指示不存在数据,可以在"文本"或"备注"字段输入零长度字符串 (零长度字符串:不含字符的字符串.可以使用零长度字符串来表明您知道该字段没有值.输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ").).在连接到 Microsoft SQL Server 数据库的 Microsoft Access 项目 (Microsoft Access 项目:与 Mi

vc怎么删除ACCESS数据库中数据?

问题描述 我的程序如下:_ApplicationExcelApp;WorkbookswbsMyBooks;_WorkbookwbMyBook;WorksheetswssMysheets;_WorksheetwsMysheet;RangergMyRge;//创建Excel2000服务器(启动Excel)if(!ExcelApp.CreateDispatch("Excel.Application",NULL))//??{AfxMessageBox("创建Excel服务失败!&qu

删除mysql数据库中的重复数据记录_Mysql

采用的是下面的方法可删除,假设重复的是test数据库中的title字段  复制代码 代码如下: create table bak as (select * from test group by title having count(*)=1);      insert into bak (select * from test group by title having count(*)>1);         truncate table test;         insert into te

php 批量删除MySql数据库中相同前缀的表

php教程 批量删除MySql数据库教程中相同前缀的表 <form id="form1" name="form1" method="post" action="<?php echo $PHP_SELF; ?>? action=kill"> <table width="425" border="0" align="center">  

asp删除mssql数据库中没有记录的图片代码_应用技巧

采用双重循环.把图片进行"."分割后名字问前面部分,那其余数据库中的 图片路径记录进行对比 采用vb的InStr函数 如果存在的话返回值>0,过可以得出结论 代码如下deal.asp 复制代码 代码如下: <%@ language="vbscript"%> <%response.Expires = 0%> <!--#include file="conn.asp"--> <% Dim objFSO,o

C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// <param name="sourceDataTable">数据源表</param> /// <param name="targetTableName">服务器上目标表</param> /// <param nam