SQL Server技术实现:判断数据库存在后执行ALTER DATABASE设置受限用户
正确实现SQL Server条件修改数据库权限的语句
嗨,刚好熟悉SQL Server的语法,帮你调整一下语句的写法——你的需求逻辑没问题,但SQL Server不支持IF ... THEN这种语法,得用它原生的IF块写法才行。
直接给你可用的代码:
IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'db') BEGIN ALTER DATABASE [db] SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE; END
这里给你解释几个关键的调整点:
- 去掉了多余的
THEN:SQL Server的IF语句不需要这个关键字,直接跟条件后的执行块即可 - 数据库名用
[db]包裹:如果你的数据库名是普通字符串其实可以不用,但加方括号能避免万一数据库名是关键字或带特殊字符时出错,更稳妥 - 字符串前加
N前缀:表示这是Unicode字符串,能避免一些字符编码相关的问题,是SQL Server里的最佳实践 - 用
BEGIN/END包裹执行语句:虽然单条语句可以不用,但加上后代码结构更清晰,以后要加更多操作也方便扩展
另外提醒一下:WITH ROLLBACK IMMEDIATE会立即终止所有非db_owner、dbcreator或sysadmin角色的现有数据库连接,执行前要确认业务允许哦,别影响正常运行。
内容的提问来源于stack exchange,提问作者Samsam
相关产品推荐
相关产品推荐

