我正在尝试使用 Signalr 和 SqlDependency
开发一个网站。我启用了 Service Broker 并运行了以下 T SQL:
GRANT CREATE PROCEDURE TO [SqlUser];
GRANT CREATE SERVICE TO [SqlUser];
GRANT CREATE QUEUE TO [SqlUser];
GRANT REFERENCES ON CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] TO [SqlUser];
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser];
GRANT CONTROL ON SCHEMA::[dbo] TO [SqlUser];
GRANT IMPERSONATE ON USER::DBO TO [SqlUser];
但是当我运行网站时,我收到以下错误:
protected void Application_Start()
{
SqlDependency.Start(
ConfigurationManager
.ConnectionStrings["CiaosConnectionString"].ConnectionString);
//WebApiConfig.Register(GlobalConfiguration.Configuration);
GlobalConfiguration.Configure(WebApiConfig.Register);
有人可以帮我找到问题吗?
最佳答案
代替
GRANT CONTROL ON SCHEMA::[dbo] TO [SqlUser];
GRANT IMPERSONATE ON USER::DBO TO [SqlUser];
无论如何,这似乎不是一个好主意,我发现您可以通过创建用户拥有的模式并将该模式设置为默认模式来消除该错误。例如,对于现有用户:
CREATE SCHEMA [SqlUser] AUTHORIZATION [SqlUser]
GO
ALTER USER [SqlUser] WITH DEFAULT_SCHEMA = [SqlUser]
队列和存储过程将在
SqlDependency.Start
期间在该模式下创建。就个人而言,我很难使用其他人拥有的模式让它工作,但我不知道为什么。
关于c# - SqlDependency.Start() 错误 : "Cannot find the specified user ' owner'",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30042955/