You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DbUp for SQL Server非dbo用户创建Schema归属dbo权限的原因咨询

问题原因与解决方案

核心原因

你的连接字符串存在配置冲突,导致DbUp实际使用Windows身份验证而非指定的SQL账户MyTestUser。

SQL Server的连接字符串规则明确:当同时设置User ID/Password和integrated security=True时,Windows身份验证会被优先采用。也就是说,DbUp运行时是用当前执行程序的Windows账户(比如你的开发机器本地账户)连接数据库的,而非你指定的MyTestUser。这个Windows账户大概率是数据库的dbo或拥有db_owner权限,因此创建的Schema会自动归属dbo。

而你手动执行SQL时,是直接以MyTestUser身份登录数据库,CURRENT_USER就是MyTestUser,所以Schema归属符合预期。

解决方案

修改连接字符串,将integrated security=True改为integrated security=False,强制使用SQL身份验证:

data source=localhost\sqlexpress;initial catalog=MyTest;User ID=MyTestUser;Password=SuperSecret;integrated security=False;MultipleActiveResultSets=False

验证步骤

可以在升级脚本中添加以下语句,确认DbUp执行时的实际账户上下文:

PRINT 'CURRENT_USER: ' + CURRENT_USER
PRINT '实际登录账户: ' + SUSER_SNAME()

执行后查看DbUp日志,就能确认是否使用了MyTestUser账户。

内容的提问来源于stack exchange,提问作者RollerMobster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:34:37