-
sql语句大全之关于15517号错误的一点想法
将一个数据库分离,然后在另一台电脑上附加,可能会出现这样的情况:在使用有限权限的用户执行一些存储过程的时候会出现15517号错误:无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限。
引发这种错误的存储过程都有一个WITH EXECUTE AS选项,指定了OWNER或者别的用户(登录名)。
例如,我在自己的电脑上用Windows身份验证登录,创建了一个数据库,并在数据库中创建了一个带有WITH EXECUTE AS OWNER选项的存储过程。然后分离这个数据库,在别人的电脑上附加,此时如果运行这个存储过程,就会引发上面提到的错误。
造成这个错误的原因是WITH EXECUTE AS选项指定的用户(登录名)在当前的服务器中不存在。当我用Windows身份验证登录服务器并创建一个数据库时,这个数据库的所有者就是我所使用的Windows账户,在本机执行存储过程时,SQL Server会找到这个用户并以它的身份来执行存储过程。然而,当把数据库附加到另一台电脑上时,那台电脑的系统上并没有我电脑上这个账户,在执行存储过程时找不到该用户,所以引发了错误。
要解决这个错误,可以修改数据库的所有者,例如执行以下命令:
ALTER
AUTHORIZATION
ON
DATABASE
::
<Database's Name
TO
sa
就把指定数据库的所有者改为sa。sa在所有的SQL Server服务器中都存在,所以不会出现上述错误。
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式