Dom*_*etz 4 sql-server nhibernate schema sql-server-2005
注意:这是一个社区维基条目,主要用于记录问题及其解决方案。我几乎无法在网上找到信息来解决这个问题。希望它可以帮助某人!
我有一个 SQL-Server 2005 DB,数据表在dbo架构上。对于项目中的一个新组件,我创建了一个新的数据访问层(使用 NHibernate),为了很好地封装它,我创建了一个新模式。
对于我需要的所有对象,我创建了一个视图:
myschema.ViewTable1
myschema.ViewTable2
等,并授予选择权限。
现在,当我尝试访问这些视图时,该用户仅对视图具有选择权限,而对 NHibernate 的基础表没有选择权限,我得到了:
The SELECT permission was denied on the object 'dbo.Table1', database 'TestDB', schema 'dbo'.
根据所有文档,这应该是可能的。更奇怪的是,SQL 确实在 Management Studio 中作为普通选择执行了工作。但是如果我exec sp_executesql像 NHibernate 那样执行它,它会因相同的异常而中断。
经过长时间的搜索,我终于在 StackOverflow 上找到了这个问题。添加的更新提供了线索:
我的新架构myschema归我的 Windows 用户所有,而不是由dbo 拥有!
在将架构所有者更改为dbo并重新创建所有myschema对象(是的,这是必需的!)之后,事情开始按预期工作!
希望这可以帮助某人。