关于 sql server 数据库权限乱七八糟的一些东西
研究权限这些东西主要是因为今天正好在折腾数据库备份相关的东西,备份好说,备份完了就完了。
但是恢复备份的时候,需要先让数据库脱机,然后恢复,然后再联机,嗯,问题就出在联机上了。
根据 MSDN 的说法:https://msdn.microsoft.com/zh-cn/library/bb522682.aspx
OFFLINE 只需要拥有本数据库的 ALTER DATABASE 权限,但是 ONLINE 却需要拥有服务器级别的 ALTER ANY DATABASE 权限。
感觉好坑的样子。。。
那么服务器默认的几个角色里面,都谁有 ALTER ANY DATABASE 权限呢,为了看这个权限,又看了好多关系不是太大的东西。。。
服务器级别角色:https://msdn.microsoft.com/zh-cn/library/ms188659.aspx
数据库级别角色:https://msdn.microsoft.com/zh-cn/library/ms189121.aspx
这两个网址里面描述的东西就是咱们平时为登陆用户分配权限时见到的几个默认角色的说明。
有兴趣的话可以看看,其实主要是现在我还对数据库的权限分配要求不是很严谨,凑合能用就行,本来应该严格的为各个不同权限的用户分配角色权限的。
顺便还查了一下架构到底是什么东西,当然还是没有看太懂就是了,所以就先贴两个链接吧:
SQL SERVER 2005/2008 中关于架构的理解(一):http://www.cnblogs.com/chillsrc/p/3383098.html
SQL SERVER 2005/2008 中关于架构的理解(二):http://www.cnblogs.com/chillsrc/p/3389374.html
感觉有点像程序里的命名空间一样,将数据库里的各个对象都放在不同的架构中,这样方便集中的管理和分配权限什么的,也可以顺便解决重名问题?(仅猜测,未验证)
好吧,回到正题,来看看默认的这些角色到底都有啥权限?
对于服务器角色:https://msdn.microsoft.com/zh-cn/library/ms179872.aspx
DECLARE @TEMP TABLE( role NVARCHAR(128), permission NVARCHAR(128) ) INSERT INTO @TEMP EXEC sp_srvrolepermission SELECT * FROM @TEMP WHERE permission = 'alter database'
嗯,还顺便学习了下怎么利用存储过程的结果。。。要用临时表存储
查到的结果呢,就这俩可以达到我们的要求。还有一个很遗憾的消息,这个方法将于未来被删除,但还没确定在哪个版本删,也不知道接班方法是谁,很坑。。。
对于数据库角色:https://msdn.microsoft.com/zh-cn/library/ms188423.aspx
这个没啥好看的就不看了。
于是呢,这里为了解决联机的问题,把对应的数据库用户赋予dbcreator角色就好咯。。。折腾这么一大圈。。。
(完)
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!