Cra*_*aig 3 sql-server service-broker
尝试从我的数据库发送邮件时收到权限错误.
我推荐了proker服务:
-- Enable Broker on Initiator
ALTER DATABASE A-DB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE A-DB SET ENABLE_BROKER;
ALTER AUTHORIZATION ON DATABASE::A-DB TO [sa];
ALTER DATABASE A-DB SET TRUSTWORTHY ON;
ALTER DATABASE A-DB SET MULTI_USER;
GO
Run Code Online (Sandbox Code Playgroud)
然后我创建队列和所有...
当我尝试发送消息时,我在sys.transmission_queue中看到以下错误:
在目标队列中排队消息时发生异常.错误:916,状态:3.服务器主体"sa"无法访问当前安全上下文下的数据库"MYDBNAME".
(其中MYDBNAME是我们正在使用的数据库的名称)
我认为错误是由这一行引起的:
更改数据库上的授权:: A-DB TO [sa];
那可能是件坏事.但是,我可以更改授权以将其恢复到原来的状态吗?我认为这将是'dbo',但那不对.是否应该设置为谁创建了数据库?
异常 - 错误:916,状态:3.服务器主体"\"无法访问当前安全上下文下的数据库"".
错误:916,状态:3.服务器主体'sa'无法在当前安全上下文下访问数据库'xxx'.
分辨率 - 执行'ALTER DATABASE ... SET TRUSTWORTHY ON'命令. technet链接
由于无法立即信任附加到SQL Server实例的数据库,因此在数据库明确标记为可信任之前,不允许数据库访问数据库范围之外的资源.
ALTER DATABASE MyDatabase SET TRUSTWORTHY ON
Run Code Online (Sandbox Code Playgroud)
就我而言,启动器和目标服务都在同一个数据库中,但它是一个导致此错误的外部数据库的连接.应该为启用了Svc Broker的db编写Alter.
| 归档时间: |
|
| 查看次数: |
7809 次 |
| 最近记录: |