博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql Server常见错误
阅读量:5888 次
发布时间:2019-06-19

本文共 941 字,大约阅读时间需要 3 分钟。

第一:

将一个数据库分离,然后在另一台电脑上附加,可能会出现这样的情况:在使用有限权限的用户执行一些存储过程的时候会出现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服务器中都存在,所以不会出现上述错误。

第二:

SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 MYPC\Administrator' 的信息,错误代码 0x534。 [SQLSTATE 42000] (ConnIsLoginSysAdmin)
当我们系统用户名更改后,会发现原来SQL中的之前运行好好的维护计划突然间全部运行失败,并出现上面错误提示。解决方法是先将 SQL 安全性>>登录名 中原来的系统用户名更改为现在所用的用户名,然后删除现有的维护计划重新建维护计划。

转载于:https://www.cnblogs.com/wangyhua/p/4050566.html

你可能感兴趣的文章
mysql入门笔记1
查看>>
VM虚拟机添加硬盘
查看>>
常用单位解析、换算、线速转发
查看>>
Ex2010-09 Create a new Certificate
查看>>
vim命令学习总结
查看>>
线性表--单链表(C++)
查看>>
mysql 5.7.9 免安装版本
查看>>
【基础技术】Java基础那些事儿系列-成员变量与局部变量
查看>>
0726linux基础内容小记
查看>>
【加密工具】2019年网络安全加密工具排行,好用的计算机加密软件推荐
查看>>
练习题
查看>>
mysql中Timestamp,time,datetime 区别
查看>>
使用Python快速建立FTP服务器
查看>>
Python和Cython有什么关系?
查看>>
bind安装域名解析服务,以及分离服务
查看>>
Netfilter/Iptables Layer7 应用层过滤策略部署
查看>>
12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_b
查看>>
如何挂载另一个lvm硬盘
查看>>
安装cobbler
查看>>
第3章 方法的重载及参数传递
查看>>