drop all tables in database by T-SQL in SQLServer
2008-04-20 11:08
555 查看
firstly I searched this topic in Google, but unfortunately, I cannot find any valueable article to
resolve it. someone think give an " drop database ; create database" idea.but always it doesn't match for our true intention. the reason is that this solution will delete all the related objects and even serious, the security (previleges grant) are also deleted. It make the table restore difficult.
in fact,it is really easy to implement it by an T-SQL.
following is my solution. (enviorment windows2003+SQL SERVER2005).
--it's my first time to write T-SQL function,share it for commemoration:-)
--delete all tables under current DB
--written by shenjian @ 2006/03/17
--if "foreign key constraint error" occur,just ignore it.
declare
@tblName varchar(2000),
@count int ,
@ExecStr varchar(2000),
@localcounter int
set @count=0
set @localcounter=1 --only need a <>0 value to start the loop,no care what it is
while @localcounter<>0 --to deal the foreign key constraint
begin
set @localcounter=0
--cursor should be cycled for next time
declare curName cursor for
select name from sys.tables order by name
open curName
fetch curName into @tblName
while @@fetch_status =0
begin
set @localcounter=@localcounter+1
select @ExecStr='drop table "'+@tblName+'"'
--print('SQL string:'+@ExecStr)
EXEC (@ExecStr)
if(@@error<>0)
begin
print(@@error)
end
fetch curName into @tblName
end
set @count=@count+@localcounter
close curName
deallocate curName
end
print('.....drop all table success....')
print('drop '+convert(varchar(5),@count)+' tables')
go
resolve it. someone think give an " drop database ; create database" idea.but always it doesn't match for our true intention. the reason is that this solution will delete all the related objects and even serious, the security (previleges grant) are also deleted. It make the table restore difficult.
in fact,it is really easy to implement it by an T-SQL.
following is my solution. (enviorment windows2003+SQL SERVER2005).
--it's my first time to write T-SQL function,share it for commemoration:-)
--delete all tables under current DB
--written by shenjian @ 2006/03/17
--if "foreign key constraint error" occur,just ignore it.
declare
@tblName varchar(2000),
@count int ,
@ExecStr varchar(2000),
@localcounter int
set @count=0
set @localcounter=1 --only need a <>0 value to start the loop,no care what it is
while @localcounter<>0 --to deal the foreign key constraint
begin
set @localcounter=0
--cursor should be cycled for next time
declare curName cursor for
select name from sys.tables order by name
open curName
fetch curName into @tblName
while @@fetch_status =0
begin
set @localcounter=@localcounter+1
select @ExecStr='drop table "'+@tblName+'"'
--print('SQL string:'+@ExecStr)
EXEC (@ExecStr)
if(@@error<>0)
begin
print(@@error)
end
fetch curName into @tblName
end
set @count=@count+@localcounter
close curName
deallocate curName
end
print('.....drop all table success....')
print('drop '+convert(varchar(5),@count)+' tables')
go
相关文章推荐
- DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
- Easy way to change collation of all database objects in SQL Server
- How to Kill All Processes That Have Open Connection in a SQL Server Database[关闭数据库链接 最佳方法] -摘自网络
- QL Server 查看所有数据库所有表大小信息(Sizes of All Tables in All Database)【复杂版本】
- DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
- MCITP SQL Server 2005 Database Developer All-in-One Exam Guide
- Drop all tables in MySQL database
- DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
- System tables of a geodatabase in SQL Server
- DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
- System tables of a geodatabase in SQL Server
- DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
- Display the size of all tables in Sql Server 2005
- Get all database from SQL Server 2005
- LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains
- How do I list user defined types in a SQL Server database
- After restoring database in SQL Server, if you can't use diagram, execute these sentences
- SQL SERVER – Attach mdf file without ldf file in Database
- Microsoft SQL Server 2008 All-in-One Desk Reference For Dummies
- List all the Databases on a SQL Server