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

database

记录一下/

--备份数据库

use[master]

go

BACKUPDATABASE[LnkSys11]TO

DISK= N"C:BackUpLnkSys11.bak"WITH--备份文件存放路径

NOFORMAT,

INIT, --INIT:覆盖备份;NOINIT: 追加备份

NAME = N"LnkSys11-Full Database Backup",

SKIP,

NOREWIND,

NOUNLOAD,

STATS =10

GO

--删除数据库

dropdatabase[LnkSys11]

go

--创建登陆帐户(create login)

ifnotexists (select1from master.dbo.syslogins where Loginname="test")

create login test with password="1234567890", CHECK_POLICY =OFF, default_database=master

go

--还原数据库

USE[master];

GO

RESTOREDATABASE[LnkSys11]FROM

DISK= N"C:BackUpLnkSys11.bak"--待还原文件位置

WITHFILE=1,

--数据库文件,日志文件存放路径,

MOVE N"WCS_Data"TO N"c:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLdataLnkSys11.mdf",

MOVE N"WCS_Log"TO N"c:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLdataLnkSys11.ldf",

RECOVERY,

NOUNLOAD,

--replace, --替换已有数据库

STATS =10

GO

--收缩数据库,和日志文件

-----------begin-----------

use[LnkSys11]

go

alterdatabase[LnkSys11]set recovery simple with NO_WAIT

go

alterdatabase[LnkSys11]set recovery simple

go

--收缩日志文件

declare@namevarchar(50),

@sqlvarchar(100);

SELECT@name=[NAME]FROM sys.database_files where[type]=1

set@sql="dbcc shrinkfile(N"""+@name+""", 10, truncateonly)";

exec (@sql)

go

dbcc shrinkdatabase([LnkSys11])

go

--恢复数据库为完整模式

alterdatabase[LnkSys11]set recovery fullwith NO_WAIT

go

alterdatabase[LnkSys11]set recovery full

go

-----------end-----------

--创建数据库(LnkSys11)用户

use[LnkSys11]

go

ifexists (select1from sys.sysusers where issqluser=1and name="test")

exec sp_dropuser "test"

createuser test for login test with default_schema=dbo

go

exec sp_addrolemember "db_owner", "test"

go

--判断是否存在用户自定义用户,如果存在则删除。

ifexists(select*from sys.database_principals where name="test")

begin

declare@UserRolevarchar(20),

@SQLvarchar(300);

--获取用户拥有的角色信息。

declare cur_UserRole cursorforselect[name]from sys.schemas where principal_id=user_id("test")

open cur_UserRole

fetchnextfrom cur_UserRole into@UserRole

while@@fetch_status=0

begin

--把架构所有者修改回来架构自身

set@SQL="alter authorization on schema::["+@UserRole+"] to ["+@UserRole+"]; ";

--删除角色拥有的成员 需要高版本(SQL2017测试通过),2008 R2 无效

set@SQL=@SQL+"alter role ["+@UserRole+"] drop member [test]";

exec(@SQL);

fetchnextfrom cur_UserRole into@UserRole

end

close cur_UserRole;

deallocate cur_UserRole;

--删除用户

dropuser[test];

end;

go

 

以上是 数据库备份、还原、删除、收缩,创建登录用户,数据库用户等操作脚本 的全部内容, 来源链接: utcz.com/z/531718.html

回到顶部