首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置订阅查询通知时出现问题

设置订阅查询通知时出现问题
EN

Stack Overflow用户
提问于 2011-04-11 15:01:23
回答 2查看 9K关注 0票数 13

我目前正在为我们的网站实现一个缓存机制。我想使用SQL缓存依赖项功能。我在management studio中运行以下命令,但它不起作用。

代码语言:javascript
复制
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "my_server_name\ASPNET"

我得到的错误是:

代码语言:javascript
复制
Cannot find the user 'my_server_name\ASPNET', because it does not exist or you do not have permission.

我尝试以特定数据库的管理员身份登录,为其设置通知,并与计算机管理员进行sa和windows身份验证。我也试过以管理员身份运行management studio,但仍然不是joy。有人能给我指个方向吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-20 00:06:44

首先,您似乎正在尝试向运行该站点的帐户授予权限。在IIS6和IIS7中,这些是由应用程序池上设置的帐户控制的。该帐户过去是ASPNET,但不再是默认帐户。取而代之的是,默认的(我相信从.NET 2.0开始)是NETWORK SERVICE。但是,如果您使用的是IIS 7,情况又一次发生了变化。默认情况下,在IIS7中,它使用名为"ApplicationPoolIdentity“的东西,这是它自己为每个站点创建的特殊凭证。如果SQL server与web服务器位于不同的计算机上,则会遇到另一个问题,即凭据都是计算机本地的。

我的建议是根据您的设置执行以下操作:

两台服务器都在同一个域中,并且您希望使用可信连接:

  1. 创建一个域帐户并将其放入域用户。
  2. 在web服务器上,将此帐户放入IIS_IUSRS组。
  3. 进入站点的应用程序池,并将运行站点所使用的帐户更改为此域帐户。您还需要确保此帐户对站点文件具有适当的NTFS权限。如果此站点仅写入数据库,您可以为帐户授予只读访问包含站点文件的文件夹的权限。
  4. 可确保形成站点所使用的连接字符串,以请求可信连接。(有关语法,请参见www.connectionstrings.com )数据库服务器上的
  5. 对此帐户执行您的授权:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO "domain name\MyIISAccount"

还可能存在其他Kerberos问题,这些问题与域上的服务器和可能需要创建SPN (服务主体名称)有关。

这两台服务器都不在域中(即,两台服务器都是成员服务器),并且您希望使用可信连接:

  1. 使用相同的用户名和密码在web服务器和数据库服务器上创建本地帐户。重要的是它们都具有相同的用户名和密码。此技术涉及使用NTLM“传递”身份验证,该身份验证与用户名和密码创建的散列相匹配,以确定用户是否在两个分离的服务器之间进行了身份验证。在Windows2008 R2上,您可能必须跳过几个本地策略环才能确保在两台服务器之间启用NTLM。
  2. 使用此帐户执行上述步骤#2到#4。
  3. 在SQL
  4. 上,请确保此本地帐户具有登录名,并且此登录名映射到数据库中的用户。然后,您将执行如下代码:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'SQLServerMachineName\AccountUsedBySite'

您希望使用SQL帐户而不是可信连接:

  1. 在这种情况下,站点用来连接到数据库的连接字符串将包括用户名和密码,它们映射到SQL Server数据库上的登录,该登录映射到数据库中的用户(通常设置为db_owner角色以使其成为dbo)。此
  2. 假设凭据正确,您只需对此用户执行您的授权:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'SQLUserAccountUsedBySite'

IIS和SQL Server位于同一台计算机上,并且您希望使用可信连接

  1. 创建本地用户帐户并将其放入Users组。
  2. 将此帐户放入本地IIS_IUSRS组。
  3. 转到网站的应用程序池,并将运行网站所使用的帐户更改为此本地帐户。您还需要确保此帐户对站点文件具有适当的NTFS权限。如果此站点仅写入数据库,则可以向帐户授予对具有站点files.
  4. Ensure的文件夹的只读访问权限。站点使用的连接字符串用于请求可信连接。(有关语法,请参见www.connectionstrings.com )
  5. 在SQL Server中,为此帐户创建一个登录帐户,然后在相应的数据库中为此帐户创建一个用户,将其放入相应的角色。
  6. 现在执行您对此帐户的授权:

GRANT SUBSCRIBE QUERY NOTIFICATIONS TO 'SQLServerMachineName\MyIISAccount'

票数 12
EN

Stack Overflow用户

发布于 2011-04-11 19:09:34

试试这个:

向my_server_name\ASPNET授予订阅查询通知

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5617847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档