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 ...
随机推荐
- EasyUI知识点汇总
combobox联动设置 $(document).ready(function() { $('#gdfsdl1').combobox({ onSelect: function(record){ $(' ...
- MySQL中ORDER BY与LIMIT一起使用(有坑)
1. 现象与问题 ORDER BY排序后,用LIMIT取前几条,发现返回的结果集的顺序与预期的不一样 下面是我遇到的问题: 可以看到,带LIMIT与不带LIMIT的结果与我预期的不一样,而且“很不可 ...
- kuangbin专题16A(kmp模板)
题目链接: https://vjudge.net/contest/70325#problem/A 题意: 有两个数组 a, b, 输出 b 数组在 a 数组中的第一个匹配位置, 不能匹配则输出 -1. ...
- luogu4168蒲公英(区间众数)
luogu4168蒲公英(区间众数) 给定n个数,m个区间询问,问每个询问中的众数是什么. 题面很漂亮,大家可以去看一下. 对于区间众数,由于区间的答案不能由子区间简单的找出来,所以似乎不能用树形结构 ...
- [Xcode 实际操作]三、视图控制器-(8)在Storyboard中设置初始化视图控制器
目录:[Swift]Xcode实际操作 本文将演示如何设置故事板的初始视图控制器. 打开自动生成的默认故事板[Main.storyboard] 在打开的故事板中,系统已经生成了一个空白的视图控制器. ...
- 帝都Day4(2)——数据结构
黄姓dalao is coming! 一.栈: 基本常识略. 例题:铁轨 模拟,O(n), Usaco2006 Nov 题目略 做法:单调栈(续命栈?) n//数量 a[]//奶牛 for(int i ...
- AT2166 Rotate 3x3
传送门 这个题网上有两种做法,一种是树状数组的,还有一种是暴力模拟的,暴力模拟显然不够优美,所以我用的树状数组 显然可以从初状态推到目标状态,我们也可以考虑倒推回去 首先可以容易发现每列的数字是不变的 ...
- 关于map 及 map 骚操作
关于map这个东西 很冷门.................. 但是,这个博客带你稍微了解一下map: map用法:一般当作一个下表无穷大的数组 关于它的骚操作:map的鬼畜用法,可以 ...
- Travelling (三进制+状压dp)
题目链接 #include <bits/stdc++.h> using namespace std; typedef long long ll; inline ll read(){ ,f= ...
- Django反向解析与分组命名
1.图书管理系统中使用分组或命名分组.URL的命名和反向解析: 2.删除功能三合一: urls.py文件 from app_book import views urlpatterns = [ url( ...