设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2718|回复: 0

数据库备份、还原、删除、收缩,创建登录用户等操作脚本

[复制链接]

36

主题

337

金钱

521

积分

初级用户

发表于 2019-12-12 15:45:58 | 显示全部楼层 |阅读模式

数据库备份、还原、删除、收缩,创建登录用户,数据库用户等操作脚本
  1. --备份数据库
  2. use [master]
  3. go
  4. BACKUP DATABASE [LnkSys11] TO
  5. DISK = N'C:\BackUp\LnkSys11.bak' WITH   --备份文件存放路径
  6. NOFORMAT,
  7. INIT,    --INIT:覆盖备份;NOINIT: 追加备份
  8. NAME = N'LnkSys11-Full Database Backup',
  9. SKIP,
  10. NOREWIND,
  11. NOUNLOAD,
  12. STATS = 10
  13. GO

  14. --删除数据库
  15. drop database [LnkSys11]
  16. go

  17. --创建登陆帐户(create login)
  18. if not exists (select 1 from master.dbo.syslogins where Loginname='test')
  19.   create login test with password='1234567890', CHECK_POLICY = OFF, default_database=master
  20. go

  21. --还原数据库
  22. USE [master];
  23. GO
  24. RESTORE DATABASE [LnkSys11] FROM
  25. DISK = N'C:\BackUp\LnkSys11.bak'    --待还原文件位置
  26. WITH FILE = 1,
  27. --数据库文件,日志文件存放路径,
  28. MOVE N'WCS_Data' TO N'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\LnkSys11.mdf',
  29. MOVE N'WCS_Log' TO N'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\LnkSys11.ldf',
  30. RECOVERY,
  31. NOUNLOAD,
  32. --replace,    --替换已有数据库
  33. STATS = 10
  34. GO

  35. --收缩数据库,和日志文件
  36. -----------begin-----------
  37. use [LnkSys11]
  38. go
  39. alter database [LnkSys11] set recovery simple with NO_WAIT
  40. go
  41. alter database [LnkSys11] set recovery simple
  42. go
  43. --收缩日志文件
  44. declare @name varchar(50),
  45.         @sql  varchar(100);
  46. SELECT @name = [NAME] FROM sys.database_files where [type]=1
  47. set @sql = 'dbcc shrinkfile(N'''+@name+''', 10, truncateonly)';
  48. exec (@sql)
  49. go
  50. dbcc shrinkdatabase([LnkSys11])
  51. go
  52. --恢复数据库为完整模式
  53. alter database [LnkSys11] set recovery full with NO_WAIT
  54. go
  55. alter database [LnkSys11]  set recovery full
  56. go
  57. -----------end-----------

  58. --创建数据库(LnkSys11)用户
  59. use [LnkSys11]
  60. go
  61. if exists (select 1 from sys.sysusers where issqluser=1 and name='test')
  62.   exec sp_dropuser 'test'
  63. create user test for login test with default_schema=dbo
  64. go
  65. exec sp_addrolemember 'db_owner', 'test'
  66. go

  67. --判断是否存在用户自定义用户,如果存在则删除。
  68. if exists(select * from sys.database_principals where name='test')
  69. begin
  70.   declare @UserRole varchar(20),
  71.           @SQL varchar(300);
  72.   --获取用户拥有的角色信息。
  73.   declare cur_UserRole cursor for select [name] from sys.schemas where principal_id=user_id('test')
  74.   open cur_UserRole
  75.   fetch next from cur_UserRole into @UserRole
  76.   while @@fetch_status=0
  77.   begin
  78.     --把架构所有者修改回来架构自身
  79.     set @SQL = 'alter authorization on schema::['+@UserRole+'] to ['+@UserRole+']; ';
  80.     --删除角色拥有的成员 需要高版本(SQL2017测试通过),2008 R2 无效
  81.     set @SQL = @SQL+'alter role ['+@UserRole+'] drop member [test]';
  82.     exec(@SQL);
  83.     fetch next from cur_UserRole into @UserRole
  84.   end
  85.   close cur_UserRole;
  86.   deallocate cur_UserRole;
  87.   --删除用户
  88.   drop user [test];
  89. end;
  90. go
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表