Sql server SQL Server网络服务作为dbo

Sql server SQL Server网络服务作为dbo,sql-server,networking,service,Sql Server,Networking,Service,我在WindowsServer2003上运行SQLServer2005。我注意到,当我使用包含“SELECT USER_NAME()”的命令从我的web应用程序(运行带有网络服务的应用程序池的IIS 6.0)查询服务器时,我得到的是“dbo”,而不是“NT AUTHORITY\Network Service”。我甚至没有在我的数据库上以dbo的形式运行网络服务 如何防止网络服务作为数据库上的dbo运行 作为旁注,我在装有Windows 7(IIS 7)、SQL Server 2008的PC上运行

我在WindowsServer2003上运行SQLServer2005。我注意到,当我使用包含
“SELECT USER_NAME()”
的命令从我的web应用程序(运行带有网络服务的应用程序池的IIS 6.0)查询服务器时,我得到的是“dbo”,而不是
“NT AUTHORITY\Network Service”
。我甚至没有在我的数据库上以dbo的形式运行网络服务

如何防止网络服务作为数据库上的dbo运行

作为旁注,我在装有Windows 7(IIS 7)、SQL Server 2008的PC上运行了相同的代码和数据库,它返回了
“SELECT USER_NAME()”
作为“NT AUTHORITY\NETWORK SERVICE”,这正是我所期望的。有什么好处

编辑:很抱歉,我没有更改此帖子。这方面我是新手。正如我所说的,最初的登录确实是网络服务,它以dbo的形式访问数据库,这是我没有想到的。网络服务帐户没有数据库的sysadmin角色或db_所有者。但是,我查看了它的有效权限,它类似于系统管理员的权限。我确保网络服务不是本地管理员组的一部分,也没有运行SQL server服务本身。 在谷歌上查找答案时,我确实遇到过类似情况的人,他们最终在作为应用程序运行时查询sys.login_令牌,查看它授予网络服务权限的主要角色。
不管怎么说,现在是周五晚些时候,我必须继续周一的工作。干杯

如果要验证实际登录名,请使用或

来自在线书籍,关于:

*如果Windows主体通过组中的成员身份访问数据库,则USER_NAME将返回Windows主体的名称,而不是组的名称*

关于问题的第二部分,阻止它作为dbo运行

请仔细阅读此处,但简而言之,在您的实例上,任何系统管理员都将是dbo。

在我尝试的大多数服务器上,它都返回“dbo”

在一台服务器上,它返回“guest”

看看这个


您是否使用suser_sname()验证了2003服务器上实际运行的登录帐户?