(SqlServer)批量清理指定数据库中所有数据

php中文网
发布: 2016-06-07 15:51:39
原创
1494人浏览过

欢迎进入Windows社区论坛,与300万技术人员互动交流 >>进入 COMMIT TRANSACTION END TRY BEGIN CATCH PRINT '===== can''t switch ' + @ForeignKey + ' to CASCADE, - ' + CAST(ERROR_NUMBER() AS VARCHAR) + ' - ' + ERROR_MESSAGE(); ROLLBACK TRAN

欢迎进入windows社区论坛,与300万技术人员互动交流 >>进入

 

  COMMIT TRANSACTION

  END TRY

  BEGIN CATCH

  PRINT '=====> can''t switch ' + @ForeignKey + ' to CASCADE, - ' +

  CAST(ERROR_NUMBER() AS VARCHAR) + ' - ' + ERROR_MESSAGE();

数组应用&二维数组 word版
数组应用&二维数组 word版

所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。 数组应用&二维数组目录 1. 数组的简单应用2. 数组排序3. 数组查找4. 数组的使用思想5. 查表法6. 二维数组7. 数组综合

数组应用&二维数组 word版 0
查看详情 数组应用&二维数组 word版

  ROLLBACK TRANSACTION

  END CATCH;

  FETCH NEXT FROM DataBaseTableRelationships INTO @ForeignKey, @ColumnName, @ReferenceTableName, @ReferenceColumnName;

  END;

  CLOSE DataBaseTableRelationships;

  DEALLOCATE DataBaseTableRelationships;

  END

  PRINT '';

  PRINT '';

  FETCH NEXT FROM DataBaseTables0

  INTO @TableOwner,@TableName;

  END

  CLOSE DataBaseTables0;

  DEALLOCATE DataBaseTables0;

  PRINT('Loop though each table and DELETE All data from the table')

  DECLARE DataBaseTables1 CURSOR FOR

  SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name

  FROM sys.tables AS t;

  OPEN DataBaseTables1;

  FETCH NEXT FROM DataBaseTables1

  INTO @TableOwner,@TableName;

  WHILE @@FETCH_STATUS = 0

  BEGIN

  IF (NOT EXISTS(SELECT TOP 1 1 FROM @IgnoreTables WHERE TableName = @TableName))

  BEGIN

  PRINT '['+@TableOwner+'].[' + @TableName + ']';

  PRINT '=====> deleting data from ['+@TableOwner+'].[' + @TableName + ']';

  BEGIN TRY

  EXEC('

  DELETE FROM ['+@TableOwner+'].[' + @TableName + ']

  DBCC CHECKIDENT ([' + @TableName + '], RESEED, 0)

  ');

  END TRY

  BEGIN CATCH

  PRINT '=====> can''t FROM ['+@TableOwner+'].[' + @TableName + '], - ' +

  CAST(ERROR_NUMBER() AS VARCHAR) + ' - ' + ERROR_MESSAGE();

  END CATCH;

  END

  PRINT '';

  PRINT '';

  FETCH NEXT FROM DataBaseTables1

  INTO @TableOwner,@TableName;

  END

  CLOSE DataBaseTables1;

  DEALLOCATE DataBaseTables1;

  PRINT('Loop through all tables and switch all constraints to have a delete rule they had at the beggining of the task')

  DECLARE DataBaseTables2 CURSOR FOR

  SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name

  FROM sys.tables AS t;

  OPEN DataBaseTables2;

  FETCH NEXT FROM DataBaseTables2

  INTO @TableOwner,@TableName;

  WHILE @@FETCH_STATUS = 0

  BEGIN

  IF (NOT EXISTS(SELECT TOP 1 1 FROM @IgnoreTables WHERE TableName = @TableName))

  BEGIN

  PRINT '['+@TableOwner+'].[' + @TableName + ']';

  DECLARE DataBaseTableRelationships CURSOR FOR

  SELECT ForeignKey, ColumnName, ReferenceTableName, ReferenceColumnName, DeleteRule

  FROM @AllRelationships

  WHERE TableName = @TableName

  OPEN DataBaseTableRelationships;

  FETCH NEXT FROM DataBaseTableRelationships INTO @ForeignKey, @ColumnName, @ReferenceTableName, @ReferenceColumnName, @DeleteRule;

  IF @@FETCH_STATUS 0

  PRINT '=====> No Relationships' ;

  WHILE @@FETCH_STATUS = 0

  BEGIN

  DECLARE @switchBackTo varchar(50) =

  CASE

  WHEN @DeleteRule = 'NO_ACTION' THEN 'NO ACTION'

  WHEN @DeleteRule = 'CASCADE' THEN 'CASCADE'

  WHEN @DeleteRule = 'SET_NULL' THEN 'SET NULL'

  WHEN @DeleteRule = 'SET_DEFAULT' THEN 'SET DEFAULT'

  END

  [1] [2] [3] 

(SqlServer)批量清理指定数据库中所有数据

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号