sqlserver 服务器主体 无法在当前安全上下文下访问数据库

今天使用sqlserver,发现了一个问题,就是使用 insert into 数据库名.dbo.表名(字段) values(值) 这样语句的时候,会返回错误:

sqlserver 服务器主体 无法在当前安全上下文下访问数据库。

于是在网上找了一下资料,发现是因为trustworthy数据库属性用于指明 SQL Server 实例是否信任该数据库以及其中的内容。默认情况下,此设置为 OFF,但是可以使用 ALTER DATABASE 语句将其设置为 ON。

查看看到哪些数据库开了trustworthy属性,命令如下:

SELECT name, database_id, is_trustworthy_on FROM sys.databases,默认就msdb开的有。

要打开数据库trustworthy属性,命令如下:

ALTER DATABASE 数据库名 SET TRUSTWORTHY ON

授权用户访问,命令如下:

ALTER AUTHORIZATION ON DATABASE::数据库名 TO [用户名]

时间: 2024-10-13 14:52:51

sqlserver 服务器主体 无法在当前安全上下文下访问数据库的相关文章

SqlException 服务器主体无法在当前安全上下文下访问数据库

遇到一个错误如下 System.Data.SqlClient.SqlException  HResult=0x80131904  Message=服务器主体 "用户名" 无法在当前安全上下文下访问数据库 "数据库名".  Source=.Net SqlClient Data Provider  StackTrace:<无法计算异常堆栈跟踪> 解决方案查看看到哪些数据库开了trustworthy属性,命令如下:SELECT name, database_i

sql server service broker中调用存储过程执行跨库操作,不管怎么设置都一直提示 服务器主体 &quot;sa&quot; 无法在当前安全上下文下访问数据库 &quot;dbname&quot;。

用sql server自带的消息队列service borker,调用存储过程中,执行了一个跨库的操作,先是用了一个用户,权限什么都给够了,但是一直提示 服务器主体 "user" 无法在当前安全上下文下访问数据库 "dbname". 想着是架构方面的问题,换sa还是不行.查到微软的一篇文章 提示需要开数据库的 ALTER DATABASE current_db SET TRUSTWORTHY ON 我把跨的那个库设置了还是不行.最后自己写测试代码,代码如下: cre

SqlServer 服务器角色和数据库角色相关操作

/*------------------------------------------------------------------------------------ [服务器级别-服务器角色] ------------------------------------------------------------------------------------*/ -- 查看固定服务器角色(8个,不可增删,未包括public,每个用户都属于public服务器角色) EXEC sp_hel

sqlserver服务器常用的性能计数器

sqlserver服务器常用的性能计数器,在此标记. 性能对象 计数器 说明 Processor %Processor Time %Privileged Time 建议值:持续低于80 建议值:持续低于10 System Processor Queue Length 等候处理器的线程队列长度 建议值:此值/CPU数  <  2       Memory Available Mbytes 给操作系统预留20%的物理内存   Pages/sec Page faults/sec 建议值:低于20(Ha

局域网内客户端无法使用机器名连接SQLServer服务器

在生产环境中有时会要求使用机器名连接SQLServer服务器,但有时捣好久都没法连上~ 针对这个问题做个简短记录,防止以后自己再遇到记不起原因,也方便一下其他同行! 废话不多说,作为工作多年的老家伙了,以下工作肯定确保过的: SQL Server服务器端的[命名管道]协议是开启了的! SQL Server服务器端的网卡NetBIOS解析功能也开启了的! SQL Server服务器端使用着的经典的1433端口在防火墙上开了例外的! 已经确保在客户端使用IP能连接上SQL Server服务器的! 放

SQLServer服务器数据库之间的数据操作(完整版)

分类: 数据库开发技术 ---------------------------------------------------------------------------------- -- Author : htl258(Tony) -- Date : 2010-06-25 22:23:18 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) -- Jul 9 2008 14:43:34 -- Cop

Oracle 配置transparent gateway(透明网关)连接sqlserver数据库(gateway安装在sqlserver服务器)

sqlserver服务器:192.168.6.16  测试数据库:orcl  测试表:shenfen  测试视图:id   端口:1433 oracle服务器:192.168.6.10 gateway安装在192.168.6.16 一.sqlserver 服务器 C:\Users\Administrator>hostname WIN-MIRBE4NEBAU C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 本地连接: 连接特定的 DNS 

sqlserver服务器名称改成本地IP地址登录

原文:sqlserver服务器名称改成本地IP地址登录 在安装sqlserver2008.2012等时选择的是默认实例,服务器名称也就是电脑的名称,特别是登录本地的数据库,需要输入电脑用户名称加上SQLEXPRESS 例如:zhangsan\SQLEXPRESS 而不是自己本机的ip地址:192.168.1.xx  内部网络别的电脑也无法访问. 问题就来了,如何修改服务器名称呢,改成用本地IP或者用户名\SQLEXPRESS登录sqlserver? 解决办法: 1.开始程序=>Microsoft

使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况

使用Telegraf + Influxdb + Grafana 监控SQLserver服务器的运行状况 前言 本文在Debian9下采用Docker的方式安装Telegraf + Influxdb + Grafana对服务器进行监控. 首先我们需要在一台Server上安装Debian9作为监控主机,这个监控主机可以配置为可监控多台Server. 安装Docker 如果之前已经安装过旧版本的Docker,先移除旧版本的安装 sudo apt-get remove docker docker-eng