SqlServer报错:主体“dbo”不存在
某台SqlServer数据库执行订阅发布的时候,报错:
无法作为数据库主体执行,因为主体“dbo”不存在、无法模拟这种类型的主体,或您没有所需的权限。(源:MSSQLServer,错误号:15517)

这种报错的原因是数据库的登录名都没有映射到这个数据库的dbo用户上。在企业管理器的图形界面看,就是在实例的登录名的属性窗口-用户映射:

在数据库Parameter上没有和dbo映射,所以Parameter的订阅发布操作会报上述错误。
“主体”这些对象可以通过系统表sys.database_principals和sys.server_principals查询,包括登录名、用户名、角色这些信息,前者是查询当前数据库的对象,后者是查询整个实例的对象。
查询sys.server_principals:
select * from sys.server_principals
部分结果如图所示:

sys.server_principals中的每个主体都有一个唯一标识sid,这个值在实例中是唯一的。sys.database_principals每条记录的sid值就对应sys.server_principals的sid。如果数据库的登录名要和Parameter的dbo用户进行了映射,则两个表中的sid应该相等。如果是通过备份还原方式从别的服务器上还原的数据库,则有可能导致sid不匹配。
查询Parameter数据库dbo对应的sid:
select name,sid from [Parameter].sys.database_principals where name='dbo'

使用上面的sid值到server_principals中查询对应的登录名
select name,sid from sys.server_principals where sid=0x0105000000000005150000007AABCEF72E958146CFF9AA6A1B090000

查询结果为空。给数据库Parameter指定所有者:sa。
ALTER AUTHORIZATION ON DATABASE::Parameter TO sa
如果使用图形界面操作,在数据库的属性窗口-文件页面,添加“所有者”,如图所示:

操作完重新查询Parameter数据库的dbo对应的sid,结果如下

0x01是用户sa的sid
select name,sid from sys.server_principals where sid=0x01

这样映射好之后,再执行订阅发布就不会报上面的错误了。重新查看登录用户sa的用户映射,可以看到parameter数据库已经映射了用户dbo:

SqlServer报错:主体“dbo”不存在的更多相关文章
- GG同步sqlserver报错一个案例 Invalid date format
在里面Oracle表同步sqlserver时间,在sqlserver当应用程序数据的结束.您可能会遇到这个错误. 2014-05-17 17:20:24 WARNING OGG-01154 SQL e ...
- GG同步到sqlserver报错一例 Invalid date format
在将Oracle表同步到sqlserver时,在sqlserver端应用数据时,可能会遇到这个报错. 2014-05-17 17:20:24 WARNING OGG-01154 SQL error - ...
- maven添加oracle和sqlserver报错
Failure to find com.oracle:ojdbc6:jar:12.1.0.1-atlassian-hosted in 'xxx' Missing artifact com.micros ...
- jdbc连接sqlserver报错java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
使用2008的数据库, 我已经引入的sqljdbc4的包,单还是报这个错,很奇怪突然想到在配置hibernate的时候,是拷贝下来的代码 然后到网上查了下, 因为是2008的版本驱动和2000的有点不 ...
- 登录SQLServer报错:无法连接到DESKTOP-LDJHQGN
解决方法:下↓↓↓
- SqlServer报错:System.Data.SqlClient.SqlException
在将Asp.Net MVC4项目部署到新机器上进行调试的时候,出现了如下错误: System.Data.SqlClient.SqlException 具体的内容如下: System.Data.SqlC ...
- sqlserver 2008 建立订阅发布时 报错 解决方案 “错误 2812” 无法创建存储过程
11月10日早上 一大早,还在地铁14号线上 ,接到同事给的信息 说我们的XX系统宕机了,本想没什么问题,一般服务器 只要硬件没有问题 重启一下就可以了, 但是事与愿违,偏偏最后检测到服务器磁盘阵列 ...
- dbutils报错:com.microsoft.sqlserver.jdbc.SQLServerException: 无法识别元数据的表
今天用dbutils操作数据库,莫名地报错:com.microsoft.sqlserver.jdbc.SQLServerException: 无法识别元数据的表 检查了sql语句没有问题.经过仔细排查 ...
- JDBC:SqlServer连接TCP/IP连接失败,到主机 的 TCP/IP 连接失败。报错信息:com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。
作者QQ:1161493927,欢迎互相交流学习. 报错信息:com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败. j ...
随机推荐
- 【ssm整合打印sql语句】
#定义LOG输出级别log4j.rootLogger=INFO,Console,File #定义日志输出目的地为控制台log4j.appender.Console=org.apache.log4j.C ...
- C# EventHandler委托事件小结--百度
最近遇到一个委托的问题,+=这个符号 this.Activated += new EventHandler(Form1_Activated);//Form1_Activated为方法名12 这个语句拆 ...
- C# Collection was modified;enumeration operation may not execute
一.问题描述 在做 数组.列表.集合遍历时,可能我们会遇见这个问题.Collection was modified;enumeration operation may not execute ,翻译的 ...
- Boost Python官方样例(一)
配置环境 $ cat /etc/os-release NAME="Ubuntu" VERSION="16.04 LTS (Xenial Xerus)" ID=u ...
- 水库(树形dp)
水库 (树形dp) R国有n座城市和n-1条长度为1的双向道路,每条双向道路连接两座城市,城市之间均相互连通.现在你需要维护R国的供水系统.你可以在一些城市修建水库,在第i个城市修建水库需要每年c_i ...
- Mice and Holes 单调队列优化dp
Mice and Holes 单调队列优化dp n个老鼠,m个洞,告诉你他们的一维坐标和m个洞的容量限制,问最小总距离.1 ≤ n, m ≤ 5000. 首先列出朴素的dp方程:\(f[i][j] ...
- mac 终端命令kill掉某个指定端口
用mac电脑开发时,有时候会遇到端口占用的问题,导致我们,不得不去结束这个端口. 第一步在终端命令输入: lsof -i : 端口号(如:lsof -i:8080) 第二步: kill -9 PID ...
- bootstrap table 学习记录
效果: html代码: <!-- 工具容器 --> <div id="toolbar" class="btn-group"> <b ...
- MD5-UTF8-大写加密
private string GetMD5Hash(string str) { string md5Str = ""; byte[] buffer = Encoding.UTF8. ...
- maven POM总结
可继承的字段 version property 其他占坑: parent import scope Dependency_Management中的scope是可以被继承的,http://maven ...